使用 jsf 2 和 Primefaces 3.4
我知道有很多类似的问题,但没有一个可以解决这个问题。
当 panelGrid "inner" 以"true" ( <h:panelGrid id="inner" rendered="true">
) => 的固定值呈现时,在单击命令按钮后,输入组件会正确更新#{tableMatchesBean.mergedAuthorAjax} 的值,
但是当这个面板的呈现是有条件的时:<h:panelGrid rendered="#{spellCheckBean.renderInputMerge}">
=> 然后输入组件是静默的(没有跟踪 tableMatchesBean.mergedAuthorAjax 已被调用)。
注意:我使用嵌套的 panelGrids 将渲染条件放在需要条件渲染的组件(输出和输入组件)的父元素中。任何帮助表示赞赏。
[评论后编辑:] xhtml 页面的作用:
- 当用户单击 selectOnebutton 中的“合并”选项时,ajax 更新将“renderInputMerge”切换为 true,从而显示“外部”组件。它工作正常。在这个组件中,有一个输入字段,显示OK。
- 用户单击 commandLink 按钮后,我需要检索此输入字段的值。如上所述,我对此有疑问。
xhtml:
<h:body style ="width:100%">
<h:form id = "currMatch">
<h:panelGrid>
<p:selectOneButton id ="selection" value="#{spellCheckBean.optionChosen}">
<f:selectItem itemLabel="keep both" itemValue="1" />
<f:selectItem itemLabel="delete both" itemValue="2" />
<f:selectItem itemLabel="merge" itemValue="3" />
<p:ajax update="outer" />
</p:selectOneButton>
</h:panelGrid>
<h:panelGrid id="outer" >
<h:panelGrid id="inner" rendered="#{spellCheckBean.renderInputMerge}">
<!-- **the line above does not update**, this one does <h:panelGrid rendered="true">-->
<h:outputText value="our suggestion: " style ="margin-left: auto; margin-right: auto"/>
<h:inputText id ="testinput" value="#{tableMatchesBean.mergedAuthorAjax}">
</h:inputText>
</h:panelGrid>
</h:panelGrid>
<p:commandButton action="#{tableMatchesBean.next_()}"
title="Add"
value="next"
update ="currMatch"
>
</p:commandButton>
</h:form>
</h:body>