jsf2とPrimefaces3.4の使用
私は多くの同様の質問があることを知っていますが、それらのどれもこれに取り組んでいません。
panelGrid "inner"が"true"(<h:panelGrid id="inner" rendered="true">
)=>の固定値でレンダリングされると、コマンドボタンがクリックされた後、入力コンポーネントは#{tableMatchesBean.mergedAuthorAjax}の値を正しく更新します。
ただし、このパネルのレンダリングが条件付きの場合:<h:panelGrid rendered="#{spellCheckBean.renderInputMerge}">
=>入力コンポーネントはサイレントです(tableMatchesBean.mergedAuthorAjaxが呼び出されたというトレースはありません)。
注:ネストされたpanelGridを使用して、条件付きでレンダリングする必要のあるコンポーネント(出力コンポーネントと入力コンポーネント)の親要素にレンダリング条件を配置しました。助けていただければ幸いです。
[コメント後の編集:] xhtmlページの機能:
-ユーザーがselectOnebuttonの「merge」オプションをクリックすると、ajaxの更新により「renderInputMerge」がtrueに切り替わり、「outer」コンポーネントが表示されます。正常に動作します。このコンポーネントには、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>