0

PrimeFaces 3.5 の booleanButtom によってレンダリングされるフォームに問題があります。フォームは期待どおりに表示されますが、コミットするとフィールドの値が null になります。ページのコード:`

<p:panelGrid>
     <p:row>
           <p:column>
                <h:form id="city">
                   <p:panelGrid columns="2">
                       <h:outputText value="Name: "/>
                       <p:inputText label="Name" value="#{managedBean.city.name}"/>

                       <h:outputText value="Status: "/>
                       <p:selectBooleanButton value="#{managedBean.city.status}" onLabel="Enable" offLabel="Disable">
                                  <p:ajax listener="#{managedBean.changeStatusCity()}"/>
                        </p:selectBooleanButton>

                        <h:outputText value="Add neighborhood?"/>
                        <p:selectBooleanButton id="btAddNeighborhood" value="#{managedBean.addNeighborCity}" onLabel="Cancel" offLabel="Yes">
                              <p:ajax update=":addNeighbor" listener="#{managedBean.addNeighborCity()}"/>
                        </p:selectBooleanButton>
                   </p:panelGrid>
              </h:form>
         </p:column>
     </p:row>

     <p:row>
          <p:column>
                <h:form id="addNeighbor">
                    <p:panel header="Neighborhood" rendered="#{managedBean.addNeighborCity}">
                       <p:panelGrid columns="2">
                              <h:outputText value="Name: "/>
                              <p:inputText label="Name" value="#{managedBean.neighborhood.name}"/>
                              <h:outputText value="Status: "/>
                              <p:selectBooleanButton value="#{managedBean.neighborhood.status}" onLabel="Enable" offLabel="Disable" onIcon="ui-icon-check" offIcon="ui-icon-close">
                                   <p:ajax listener="#{managedBean.changeStatusNeighbor()}"/>
                              </p:selectBooleanButton>
                       </p:panelGrid>
                    </p:panel>
                 </h:form>

                 <h:form id="formBt">
                      <p:commandButton id="bt" value="Add" actionListener="#{managedBean.saveNeighborCity()}" update=":addNeighbor, :city:btAddNeighborhood"/>
                 </h:form>
          </p:column>
     </p:row>
</p:panelGrid>`

そしてマネージビーン

public void addNeighborCity(){
    if(addNeighborCity){
        neighborhood = new Neighborhood();
        neighborhood .setStatus(true);
        neighborhood .setStringStatus("Enable");
    }else{
       neighborhood = null;
    }
}

public void changeStatusNeighbor() {
    if (neighborhood .isStatus()) {
        neighborhood .setStringStatus("Enable");
    } else {
        neighborhood .setStringStatus("Disable");
    }
}

public void saveNeighborCity(){
       city.getNeighborhoods().add(neighborhood );
       neighborhood = null;
       addNeighborCity = false;
}

レンダリングされたフォーム内のすべての入力は、管理 Bean に情報を送信しません。都市のリストに隣人を追加するボタンを配置すると、ボタンが機能しなくなり、管理 Bean が呼び出されなくなります。 . 誰かが私が間違っていることや何が起こっているのか知っていますか. Primefaces3.5、GlassFish4.0、および JSF2.2 を使用しています

4

2 に答える 2

0

私は問題を解決しました。私はglassfish 4を使用していました.jsf2.1をプロジェクトに入れてもjsf2.2を強制します.それから私はglassfish 3に変更し、すべてうまくいきました.答えてくれてありがとう. @ScopeSession を使用します。

于 2013-09-10T13:26:51.243 に答える
0

マネージド Bean 全体を投稿していないので、マネージド Bean のデフォルトのスコープを使用していると思います: @RequestScoped。その場合は、を使用する必要があります@ViewScoped

于 2013-08-30T03:59:26.860 に答える