0

我正在做一个密码编辑器。可以通过两种方式输入密码:手动输入密码和确认值或选择一些已经生成的密码。

要使用生成的密码,必须从选择框中选择一个新值。更改触发使用所选值中的值填充密码/确认字段(psw1和)。psw2

<p:selectOneMenu value="#{password.selectedPassword}" >
    <f:selectItems value="#{password.passwords}" var="val"
        itemLabel="#{val}" itemValue="#{val}" />
        <p:ajax update="psw1, psw2" listener="#{password.passwordChanged}"/>
</p:selectOneMenu>

I need to implement the filling of password fields also when the the same value is selected. 我该如何实施?一种方法是添加一个额外的值,一个默认的空值。

4

1 回答 1

1

change如果值未更改,则无法触发事件。实际上,一种方法是提供一个默认值,如“请选择”中的#{null}值,甚至带有noSelectionOption="true"附加的<f:selectItem>. 这迫使最终用户将值实际更改为有效值。

例如

<p:selectOneMenu value="#{password.selectedPassword}" >
    <f:selectItem itemValue="#{null}" itemLabel="--select--" />
    <f:selectItems value="#{password.passwords}" var="val"
        itemLabel="#{val}" itemValue="#{val}" />
        <p:ajax update="psw1, psw2" listener="#{password.passwordChanged}"/>
</p:selectOneMenu>

另一种方法是使用<p:selectOneListbox>,如果您没有很多项目,这可能会更好。

<p:selectOneListbox value="#{password.selectedPassword}" >
    <f:selectItems value="#{password.passwords}" var="val"
        itemLabel="#{val}" itemValue="#{val}" />
        <p:ajax update="psw1, psw2" listener="#{password.passwordChanged}"/>
</p:selectOneListbox>
于 2013-09-20T18:30:44.180 回答