设置两个p:selectOneMenu [英] Setting two p:selectOneMenu s

查看:59
本文介绍了设置两个p:selectOneMenu的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在网页上使用两个撇号selectonmenus.

I need to use two primefaces selectonmenus to my web page.

  1. 我的第二个选择菜单在具有静态数据时起作用,所有数据可以在按下按钮后单击按钮查看

  1. 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆