Выпадающий список Primefaces не устанавливает значение

Я пытаюсь удалить изображение, принадлежащее альбому. Я предоставляю 2 раскрывающихся списка, первый позволяет выбрать альбом, второй - выбрать изображение альбома. Первый при изменении устанавливает второй. Затем кнопка удаления вызывает метод удаления. Я отлаживал его несколько раз, но значения всегда нулевые. Ты знаешь почему? как я могу заставить его работать? примечание: когда я устанавливаю первый раскрывающийся список, значение присутствует, но после того, как я устанавливаю второе, они оба становятся нулевыми.

Спасибо

 <h:form>
            <h:panelGrid>


                <h:outputLabel value="#{diaryMB.selectedAlbum}"/>


                <p:selectOneMenu
                    id="albums" value="#{diaryMB.selectedAlbum}" effect="drop">
                    <f:selectItem itemLabel="Select An Album" itemValue="-1"  />  
                    <f:selectItems value="#{diaryMB.albums}" var="album"
                                   itemLabel="#{album}" itemValue="#{album}" />

  <p:ajax event="change" listener="#{diaryMB.updateImage()}" update="images"/> 

                </p:selectOneMenu>


                <h:outputLabel value="#{diaryMB.selectedImage}" />


                <p:selectOneMenu 
                        id="images" value="#{diaryMB.selectedImage}" effect="drop">
                        <f:selectItem itemLabel="Select An Image" itemValue="-1" />  
                        <f:selectItems value="#{diaryMB.images}" var="image"
                                       itemLabel="#{image}" itemValue="#{image}" />
                </p:selectOneMenu>
               <p:commandButton id="removeImageButton" value="Remove" ajax="false" action="#{diaryMB.removeImage()}"/>

             </h:panelGrid>
        </h:form>





public String removeImage(){
    System.out.println("I am selected image:"+selectedImage);
    System.out.println("I am slected album "+selectedAlbum);
    if(selectedImage!=null && !selectedImage.equals("-1"))
    {diaryManager.removeImageFromAlbum(diaryOwner, selectedAlbum, selectedImage);
    return "Friends";}
    else
        return "Home";
}

person Viola    schedule 11.02.2012    source источник


Ответы (1)


Это может быть связано с тем, что ваш управляемый компонент RequestScoped и воссоздается после каждого запроса ajax. Попробуйте использовать ViewScoped или SessionScoped и посмотрите, останутся ли значения.

person maple_shaft    schedule 13.02.2012