3

如何在类型重置时按 p:commandButton 重置 p:selectOneMenu 的值。我的代码如下

<h:form id="form">

    <p:panelGrid columns="2" cellspacing="10" >
    <f:facet name="header">Login</f:facet>
    <p:outputLabel value="Username" />
    <p:inputText value="#{user.username}" />
    <p:outputLabel value="Password" />
    <p:password value="#{user.password}"></p:password>

    <p:outputLabel value="Locale" />
    <p:selectOneMenu >
    <f:selectItem itemValue="Select Country" itemLabel="Select Country" />
    <f:selectItem itemValue="Poland" itemLabel="Poland"/>
    </p:selectOneMenu>
    <p:commandButton value="Submit"></p:commandButton>
    <p:commandButton type="reset" value="Clear" update="form"></p:commandButton>
    </p:panelGrid>

</h:form>

这样做时,用户名和密码会被清除,但选择国家的下拉菜单不会重置。

4

1 回答 1

3

首先,您只是显示您的值p:selectOneMenu而不是分配这些值,value属性代表能够将当前选择的值从客户端分配到支持 bean 值中,所以;

<p:selectOneMenu id="myMenu" value="#{bean.selectedCountry}">
    <f:selectItem itemValue="Select Country" itemLabel="Select Country" />
    <f:selectItem itemValue="Poland" itemLabel="Poland"/>
</p:selectOneMenu>

现在,如果用户选择波兰作为国家,它将被设置为selectedCountry支持 bean,也不要忘记实现 getter 和 setter 方法。

然后,如果您想重置组件的值,p:selectOneMenu生成一个标签并更改它的文本可以在视图中解决问题:

<p:commandButton onclick="resetter();" type="reset" value="Clear" update="form"></p:commandButton>

和js函数:

function resetter() {
    document.getElementById('form:myMenu_label').innerHTML = 'Select Country';
}
于 2013-04-27T10:58:54.407 回答