h:graphicImage не се изобразява повторно

Имам jsf файл, в който имам selectOneMenu и h:graphicImage. Сега проблемът е, когато изпратя заявка за промяна през selectOneMenu и искам да рендерирам отново h:graphicImage и искам да покажа и скрия boolean в действие bean. Но не работи правилно. Всъщност първо проучвам много внимателно, че когато изпратя действие чрез selectOneMenu, булевата стойност е зададена правилно в bean, но не е зададена правилно стойността за повторно изобразяване. Ако опресня страницата, тогава тя работи правилно. Всеки, който мога да го реша, ако искам да опресня страницата на selectOneMenu actionlistener след това как опреснявам страницата. Моят код е тук за повече подробности

    <h:selectOneMenu id="stageListID" value="#{mnpBean.stageList.defaultValue}" >
<f:selectItems  value="#{mnpBean.stageList.values}"/>
<a4j:support event="onchange" actionListener="#{mnpAction.onStageListChangeAction}" reRender="addBtn1" oncomplete="resetViewConfigs();"/>
</h:selectOneMenu>

код за графично изображение

<h:graphicImage id="addBtn1"  url=""  rendered="#{mnpBean.showAddButton}" style="cursor:pointer">
<a4j:support id="addRowBtn1" event="onclick"  actionListener="#{mnpAction.addMultiNoRingFence}"/>
</h:graphicImage> 

bean код тук

public void onStageListChangeAction(ActionEvent ae) {
mnpBean = getMNPBean();
if ("10".equals(mnpBean.getStatusList().getDefaultValue()) &&       "010".equals(mnpBean.getStageList().getDefaultValue())) {
 mnpBean.setShowAddButton(false);         
 }else{
 mnpBean.setShowAddButton(true);         
 }

}

Всяка помощ относно това оценявам


person seeker    schedule 18.01.2013    source източник
comment
@BalusC, моля, предложете решение тук   -  person seeker    schedule 18.01.2013
comment
@nickname коментар-отговори не работят, ако въпросният човек не е редактирал/коментирал публикацията предварително. Просто изчакайте, докато види въпроса :)   -  person BalusC    schedule 18.01.2013
comment
@BalusC добре сега го разбрах :) все пак благодаря и за това :)   -  person seeker    schedule 18.01.2013


Отговори (1)


Какво трябва да направите:

  1. Увийте своя <h:graphicImage/> в контейнер като <h:panelGrid/>

    <a4j:outputPanel ajaxRendered="true" layout="none" id="imageContainer">
     <h:graphicImage id="addBtn1"  url=""  rendered="#{mnpBean.showAddButton}" style="cursor:pointer">
        <a4j:support id="addRowBtn1" event="onclick"  actionListener="#{mnpAction.addMultiNoRingFence}"/>
     </h:graphicImage> 
    <a4j:outputPanel/>
    
  2. Използвайте идентификатора на контейнера като цел на reRender

    <a4j:support event="onchange" actionListener="#{mnpAction.onStageListChangeAction}" reRender="imageContainer" oncomplete="resetViewConfigs();"/>
    

За причината, поради която проблемът възниква на първо място, вижте обяснението тук

person kolossus    schedule 18.01.2013