0

我有一个 jsf 文件,其中有 selectOneMenu 和 ah:graphicImage。现在问题是当我通过 selectOneMenu 发送 onchange 请求并想要重新渲染 h:graphicImage 并希望在操作 bean 中显示和隐藏布尔值时。但不能正常工作。实际上,首先我非常仔细地调查它,当我通过 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);         
 }

}

任何有关此的帮助表示感谢

4

1 回答 1

2

你应该做什么:

  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. 使用容器的 id 作为目标reRender

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

对于问题首先发生的原因,请参阅此处的说明

于 2013-01-18T11:44:26.457 回答