我需要使用两个素面选择菜单到我的网页。
-
我的第二个选择菜单工作时,它有静态数据,所有的数据可以在按钮点击后,按下按钮查看
-
但是它不能与动态数据一起工作数据在从第一个选择菜单中选择一个值后加载到这个使用ajax数据加载到这个选择菜单但是它总是显示空值从这个
这是点1
的代码<p:tab id="create_Subnet_T" title="Create subnet">
<h:form id="create_Subnet">
<h:panelGrid columns="2" cellpadding="10">
<h:outputText value="Area:"/>
<p:selectOneMenu id="AreaDDL" value="#{a_Subnet.selectedArea}" required="true">
<f:selectItem itemLabel="Select area" itemValue="" />
<f:selectItems value="#{a_Subnet.areaList}" />
</p:selectOneMenu>
<h:outputText id="create_Subnet_OT" value="IP Address :" />
<p:selectOneMenu id="resourceDDL" value="#{a_Subnet.selectedResource}" required="true">
<f:selectItem itemLabel="Select resource" itemValue="A" />
<f:selectItem itemLabel="Select resource" itemValue="B" />
<f:selectItem itemLabel="Select resource" itemValue="C" />
</p:selectOneMenu>
<h:outputText id="netmask_OT" value="netmask :" />
<p:inputText id="netmask_IT" required="true" value="#{a_Subnet.netmask}"/>
<h:outputText id="description_OT" value="Description :" />
<p:inputTextarea id="description_ITA" required="true" value="#{a_Subnet.description}"/>
<p:commandButton id="create_Subnet_Btn" value="Create" action="#{a_Subnet.test}" />
</h:panelGrid>
</h:form>
这是不能工作的代码(对于第2点):
<p:tab id="create_Subnet_T" title="Create subnet">
<h:form id="create_Subnet">
<h:panelGrid columns="2" cellpadding="10">
<h:outputText value="Area:"/>
<p:selectOneMenu id="AreaDDL" value="#{a_Subnet.selectedArea}" required="true">
<f:selectItem itemLabel="Select area" itemValue="" />
<f:selectItems value="#{a_Subnet.areaList}" />
<p:ajax event="change" update=":Subnet_TV:create_Subnet:resourceDDL"
listener="#{a_Subnet.setResourceToDropDownList(a_Subnet.selectedArea)}"/>
</p:selectOneMenu>
<h:outputText id="create_Subnet_OT" value="IP Address :" />
<p:selectOneMenu id="resourceDDL" value="#{a_Subnet.selectedResource}" required="true">
<f:selectItem itemLabel="Select resource" itemValue="A" />
<f:selectItems value="#{a_Subnet.resourceList}" />
</p:selectOneMenu>
<h:outputText id="netmask_OT" value="netmask :" />
<p:inputText id="netmask_IT" required="true" value="#{a_Subnet.netmask}"/>
<h:outputText id="description_OT" value="Description :" />
<p:inputTextarea id="description_ITA" required="true" value="#{a_Subnet.description}"/>
<p:commandButton id="create_Subnet_Btn" value="Create" action="#{a_Subnet.test}" />
</h:panelGrid>
</h:form>
</p:tab>
这是ajax中用于检查输出的方法:
public void test(){
System.out.println("hjhjjh");
System.err.println( "Area = "+selectedArea);
System.err.println("Resource = "+selectedResource);
System.err.println("SNetmask = "+netmask);
System.err.println("Description = "+description);
}
当您在同一页面中处理ajax操作时,建议您的托管bean至少具有@ViewScoped
注释,因为只要您在浏览器窗口/选项卡中与相同的JSF视图交互,此范围内的 bean就会存在(来自JSF 2中的通信:托管bean范围)。
如果您使用CDI注释(如@Named
),那么您将没有@ViewScoped
注释。为了使它可用于CDI,您应该添加MyFaces CODI。
作为一个额外的建议,不要在getter/setter方法中编写业务逻辑服务器,因为getter会被多次调用。