1

次の問題があり、どこにも解決策が見つかりませんでした。

次のコードがあります。

<h:inputText id="username" value="#{registrationBB.userName}" binding="#{userNameToConfirm}"/>

そして後で:

<h:inputSecret id="confirmed-password" value="#{registrationBB.userPasswordConfirmed}">
  <f:validator validatorId="usernameNotInPasswordValidator"/>
  <f:attribute name="username" value="#{userNameToConfirm.value}" />
</h:inputSecret>

inputText は #{userNameToConfirm} (どのバッキング Bean のプロパティでもありません) にバインドされ、後でこのバインドがパスワード バリデーターで使用されます。

これはすべてうまくいきます。

ただし、これらのフィールドがあるフォームには「リセット」ボタンが含まれており、フォームのすべてのフィールドを空にする必要があります。

リセット ボタンをクリックすると、registrationBB のすべてのプロパティが空になり、次のコードが呼び出されます。

getViewRoot().getChildren().clear();

ただし、「#userNameToConfirm」バインディングの値によって常に設定されるため、ユーザー名が空になることはありません。

私の質問は次のとおりです。このバインディングにアクセスして、faces バックエンドで削除するにはどうすればよいですか?

jsf バージョン 1.2 を使用します。

よろしく、アーラッシュ

4

1 に答える 1

0

代わりに、リセット ボタンでページをリロードしてください。

<h:commandButton value="Reset" onclick="location.reload(true)" />

または a<navigation-case>と aによって<redirect>

<h:commandButton value="Reset" action="reloadPagename" />

<navigation-rule>
    <navigation-case>
        <from-outcome>reloadPagename</from-outcome>
        <to-view-id>/pagename.jsf</to-view-id>
        <redirect />
    </navigation-case>
</navigation-rule>
于 2012-05-24T12:56:13.793 に答える