设置两个p:selectOneMenu [英] Setting two p:selectOneMenu s
问题描述
我需要在网页上使用两个撇号selectonmenus.
I need to use two primefaces selectonmenus to my web page.
-
我的第二个选择菜单在具有静态数据时起作用,所有数据可以在按下按钮后单击按钮查看
My second selectonmenu works when it has static data all data can view in button click after press the button
但是它不适用于动态数据,在第一个选择菜单中使用ajax数据加载到该选择菜单中选择一个值后,该数据将加载到此数据,但是从此选择一个值后,它始终显示空值
But it not work with dynamic data data get load to this after selecting a value from 1st selectonmenu using an ajax data load to this selectonmenu but it always show null value after select a value from this
这是第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点):
This the code that not working (for point 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中用于检查输出的方法:
This is the method used in ajax for check the output:
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视图进行交互,(来自
When you deal with ajax operations in the same page, it is recommended that your managed bean have at least @ViewScoped
annotation since the bean in this scope lives as long as you're interacting with the same JSF view in the browser window/tab (from Communication in JSF 2: Managed Bean Scopes).
如果您使用的是CDI注释(如@Named
),那么您将没有@ViewScoped
注释.为了使其可用于CDI,您应该添加 MyFaces CODI .
If you're using CDI annotations (like @Named
), then you won't have the @ViewScoped
annotation. In order to make it available for CDI, you should add MyFaces CODI.
作为一项附加建议,不要在getters/setters方法内编写业务逻辑服务器,因为 getter会被多次调用.
Just as an additional recommendation, don't write business logic server inside the getters/setters methods since getters get called multiple times.
这篇关于设置两个p:selectOneMenu的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!