h:graphicImage not reRender

У меня есть файл jsf, где у меня есть selectOneMenu и a h:graphicImage. Теперь проблема заключается в том, что я отправляю запрос об обмене через selectOneMenu и хочу повторно отобразить h: graphicImage и хочу показать и скрыть логическое значение в действии. Но это не работает должным образом. На самом деле сначала я очень тщательно исследую это, когда при отправке действия через selectOneMenu логическое значение правильно устанавливается в bean-компоненте, но не устанавливается значение reRender должным образом. Если я обновляю страницу, то она работает должным образом. Любой, кого я могу решить, если я хочу обновить страницу на 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> 

код бина здесь

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);         
 }

}

Любая помощь в этом отношении

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();"/>
    

По той причине, почему проблема возникает в первую очередь, см. Объяснение здесь

Другие вопросы по тегам