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 に答える