1

selectOneRadioとパネルのレンダラーを使用すると問題が発生します。

私のcession.xhtmlにはこれが含まれています

    <p:selectOneRadio id="options" value="#{editionBean.radioProprietaire}">
      <f:selectItem itemLabel="Particulier" itemValue="particulier" />
      <f:selectItem itemLabel="Societe" itemValue="societe" />
      <f:ajax listener="#{editionBean.listener}"/>
    </p:selectOneRadio>

    <h:panelGroup rendered="#{editionBean.renderSoc}">...</h:panelGroup>
    <h:panelGroup rendered="#{editionBean.renderPart}">...</h:panelGroup>

My EditionBean.class

private boolean renderSoc;
private boolean renderPart;
private String radioProprietaire;

public void listener(AjaxBehaviorEvent event) {
  if(null != radioProprietaire && radioProprietaire.equals("particulier")){
           renderPart = true;
       renderSoc = false;
      }
  else if(null != radioProprietaire && radioProprietaire.equals("societe")){
    renderPart = false;
    renderSoc = true;
      }
  }

メソッドリスナーが呼び出されていることは知っていますが、誰かが私を助けてくれる場合、このパネルは表示されませんか?

4

2 に答える 2

4

2つの問題があります。

  1. PrimeFacesコンポーネント<p:ajax>の代わりに必要です。<f:ajax>

  2. 再レンダリングされるように、ajaxアップデートでJSFコンポーネントを明示的に指定する必要があります。現在のアプローチでは、基本的に何も更新していません。を使用<f:ajax>すると、更新するコンポーネントを属性で指定し、属性renderで指定する必要があります。<p:ajax>update

さらに、いくつかの非効率性が起こっています。リスナーメソッドやこれらの多くのブールプロパティはまったく必要ありません。属性でラジオボタンの値を直接確認できrenderedます。

だから、すべてで、これは行う必要があります:

<p:selectOneRadio id="options" value="#{editionBean.radioProprietaire}">
    <f:selectItem itemLabel="Particulier" itemValue="particulier" />
    <f:selectItem itemLabel="Societe" itemValue="societe" />
    <p:ajax update="groups" />
</p:selectOneRadio>

<h:panelGroup id="groups">
    <h:panelGroup rendered="#{editionBean.radioProprietaire == 'societe'}">
        ...
    </h:panelGroup>
    <h:panelGroup rendered="#{editionBean.radioProprietaire == 'particulier'}">
        ...
    </h:panelGroup>
</h:panelGroup>

参照:

于 2013-01-19T14:40:52.100 に答える
1

この回答で説明されているように、パネルを表示するには、<h:panelGroup>コンポーネントを内にラップし、UIContainerその大きなコンテナをレンダリングする必要があります

<p:selectOneRadio id="options" value="#{editionBean.radioProprietaire}">
  <f:selectItem itemLabel="Particulier" itemValue="particulier" />
  <f:selectItem itemLabel="Societe" itemValue="societe" />
  <p:ajax listener="#{editionBean.listener}" render="pnlSoc pnlPart" />
</p:selectOneRadio>

<h:panelGrid id="pnlSoc">
    <h:panelGroup rendered="#{editionBean.renderSoc}">...</h:panelGroup>
</h:panelGrid>
<h:panelGrid id="pnlPart">
    <h:panelGroup rendered="#{editionBean.renderPart}">...</h:panelGroup>
</h:panelGrid>
于 2013-01-19T13:58:41.860 に答える