コードを何度も確認しましたが、質問は見つかりませんでした。
p:commandButtonのレンダリングプロパティに問題があります。getterメソッドがfalseを返した場合でも、p:commandButtonは常に表示されます。これは、ajaxの更新後に発生します。
MBを設定し、ap:commandButton(ブールゲッターに基づくレンダリングされたプロパティを使用)と他の2つのコンポーネント(2番目のp:selectOneMenuとap:outputLabel)を更新するap:ajax event = "change"を含むap:selectOneMenuがあります。
最初のp:selectOneMenu選択を変更すると、2番目のp:selectOneMenuとp:outputLabelは問題なくレンダリングされますが、p:commandButtonは常に表示されます。レンダリングされたプロパティは更新されません。
ブラウザを更新するか、update = "@ form"を設定すると、p:commandButtonが正しく表示/非表示になります。ただし、すべてのコンポーネントが同じコンテナ内にあることに注意してください。
私は何が間違っているのですか?コード:
<p:selectOneMenu id="cmbPais" value="#{pessoaController.selected.endereco.pais}">
<f:selectItems value="#{paisController.itemsSelectOne}"/>
<p:ajax event="change" update="cmbEstado,btnBuscaPeloEndereco,test"/>
</p:selectOneMenu>
<p:outputLabel id="test" value="#{pessoaController.selected.endereco.ok}"/>
<p:commandButton id="btnBuscaPeloEndereco" icon="ui-icon-correios" type="button" onclick="dlgCEP.show();" rendered="#{pessoaController.selected.endereco.ok}"/>
<p:selectOneMenu id="cmbEstado" value="#{pessoaController.selected.endereco.estado}">
<f:selectItems value="#estadoController.getItemsSelectOne(pessoaController.selected.endereco.pais)}"/>
<f:ajax event="change" render="cmbCidade" />
</p:selectOneMenu>