0

我在 PrimeFaces 3.5 上由 booleanButtom 呈现的表单出现问题,该表单按预期显示,但是当我提交该字段的值时为空。页面代码:`

<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>`

和管理 bean

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 回答