Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSF Primefaces:如何从表单2中的对话框更新selectOneMenu(在表单1中)?_Java_Jsf_Primefaces - Fatal编程技术网

Java JSF Primefaces:如何从表单2中的对话框更新selectOneMenu(在表单1中)?

Java JSF Primefaces:如何从表单2中的对话框更新selectOneMenu(在表单1中)?,java,jsf,primefaces,Java,Jsf,Primefaces,在提交form2中的commandbutton后,我想更新form1中的selectOneMenu。它现在仅在刷新页面后可见 我在表格1中有一个SelectOne菜单: <h:form id="form1" rendered="#"> <p:spacer height="30" /> <h:selectOneMenu id="oneMenu" value="#{bean.value}">

在提交form2中的commandbutton后,我想更新form1中的selectOneMenu。它现在仅在刷新页面后可见

我在表格1中有一个SelectOne菜单:

<h:form id="form1" rendered="#">

            <p:spacer height="30" />
            <h:selectOneMenu id="oneMenu" value="#{bean.value}">
                <f:selectItem itemLabel="Select Value" itemValue="" />
                <f:selectItems id="itemValues"
                    value="#{bean.allItems}" var="allItems"
                    itemValue="#{allItems}" itemLabel="#{allItems.name}" />
            </h:selectOneMenu>

以及表格2中的对话框:

<h:form id="form2">
            <p:dialog header="Create new Item" widgetVar="newItem"
                resizable="false">

                <h:panelGrid columns="2" style="margin-bottom:10px">

                    <h:outputLabel for="item" value="Itemname:" />
                    <p:inputText id="itemname" value="#{bean.itemName}" />
                </h:panelGrid>

                <p:commandButton value="Submit"
                    actionListener="#{bean.newItem}"
                    update="form1:oneMenu" oncomplete="newItem.hide();"  />

            </p:dialog>

我尝试了
update=“form1:oneMenu”
,但不起作用。我也读过 但它也不起作用


感谢您的帮助。

请确保使用
update=“:form1:myPanel”

例如:

<h:form id="form1">
    <h:selectOneMenu id="oneMenu" value="#{bean.value}">
    ...
    </h:selectOneMenu>
</h:form>

<h:form id="form2">
    <p:dialog ..>
        ...
        <p:commandButton value="Submit" update=":form1:oneMenu" ..../>
    </p:dialog>
</h:form>

注意:如果您在对话框中输入值
AAA
BBB
CCC
DDD
,则
selectedOneMenu
的值将被更改。

请确保使用
update=“:form1:myPanel”

例如:

<h:form id="form1">
    <h:selectOneMenu id="oneMenu" value="#{bean.value}">
    ...
    </h:selectOneMenu>
</h:form>

<h:form id="form2">
    <p:dialog ..>
        ...
        <p:commandButton value="Submit" update=":form1:oneMenu" ..../>
    </p:dialog>
</h:form>

注意:如果您在对话框中输入值
AAA
BBB
CCC
DDD
,则
selectedOneMenu
的值将被更改。

您的意思是您尝试了
update=“:form1:oneMenu”但不起作用?你的代码中是否有输入错误?是的,我尝试了
update=“:form1:oneMenu”
update=“form1:oneMenu”
。我不知道为什么会出现渲染的=“#”。我正在开发一个现有的代码,我是JSF新手。相关:你的意思是你尝试了
update=“:form1:oneMenu”,但它不起作用?你的代码中是否有输入错误?是的,我尝试了
update=“:form1:oneMenu”
update=“form1:oneMenu”
。我不知道为什么会出现渲染的=“#”。我是在现有代码的基础上开发的,我是JSF新手。相关:尝试了第二个代码,现在没有错误了。谢谢你。但它仍然不会更新菜单:我还在菜单中设置了autoupdate=“true”tag@cycdemo,您在
getCities()
中的建议不是有点不安全吗?除了不好的做法外,JSF习惯于忽略绑定到值的命令组件上的提交,该值的更改很可能会导致
验证错误:value not valid
error尝试了第二个,现在没有更多错误了。谢谢你。但它仍然不会更新菜单:我还在菜单中设置了autoupdate=“true”tag@cycdemo,您在
getCities()
中的建议不是有点不安全吗?除了不好的做法之外,JSF习惯于忽略绑定到值的命令组件上的提交,该值在周期中更改很可能会导致
验证错误:value not valid
错误
<h:form id="form1">
    <p:selectOneMenu style="width:195px;" required="true" id="cityMenu">
        <f:selectItems value="#{SelectOneMenuBean.cities}"/>
    </p:selectOneMenu>
    <p:commandButton oncomplete="newItem.show()" value="Show Dialog"/>
</h:form>
<h:form id="form2">
    <p:dialog header="Create new Item" widgetVar="newItem" resizable="false">
        <h:panelGrid columns="2" style="margin-bottom:10px">
            <h:outputLabel for="item" value="Itemname:" />
            <p:inputText id="itemname" value="#{SelectOneMenuBean.selectedValue}" />
        </h:panelGrid>

        <p:commandButton value="Submit" update=":form1:cityMenu" oncomplete="newItem.hide();"  />

    </p:dialog>     
</h:form>

public class SelectOneMenuBean {
    private String selectedValue;

    public String getSelectedValue() {
        return selectedValue;
    }

    public void setSelectedValue(String selectedValue) {
        this.selectedValue = selectedValue;
    }

    public String[] getCities() {
        if(selectedValue != null && selectedValue.equals("AAA")) {
            return new String[] {"City_1 of AAA", "City_2 of AAA", "City_3 of AAA"};
        } else if(selectedValue != null && selectedValue.equals("BBB")) {
            return new String[] {"City_1 of BBB", "City_2 of BBB", "City_3 of BBB"};
        } else if(selectedValue != null && selectedValue.equals("CCC")) {
            return new String[] {"City_1 of CCC", "City_2 of CCC", "City_3 of CCC"};
        } else if(selectedValue != null && selectedValue.equals("DDD")) {
            return new String[] {"City_1 of DDD", "City_2 of DDD", "City_3 of DDD"};
        } 
        return new String[] {"No City"};
    }
}