2016-04-11 9 views
1

JSF ajaxリクエストで入力の値を変更しようとしています。値を変更するJSF ajaxイベント

私は、JSFのコードがあります。

<h:inputSecret id="pwd" value="#{info.password}" redisplay="true"> 
    <f:ajax event="focus" listener="#{info.changePassword}" /> 
</h:inputSecret> 

をしてinfo Beanが含まれています

public String getPassword() { 
    return ""; 
} 

public void changePassword(AjaxBehaviorEvent e) { 
    UIInput input = (UIInput)e.getComponent(); 
    input.setValue(createRandomPassword()); 
} 

createRandomPassword()は短いランダムな文字列を作成します。

入力がフォーカスになると、changePassword関数が呼び出され、ランダムな文字列が設定されていることがわかりますが、入力値は空のままです。

だからなぜsetValueに値を設定しないのですか?どうすればそれを動作させることができますか?

+0

の属性をレンダリング使用して、その値を設定した後、パスワードの入力コンポーネントを再レンダリングする必要があります。サーバーサイドモデルを更新するだけです。しかし、単に「パスワード」というフィールドを作成して、イベントからの入力を取得する代わりにそのフィールドを設定するのはなぜですか? – Kukeltje

+0

@Kukeltje私はJSFの新機能です。私はそれが仕事をすると思っていました。私に例を教えてもらえますか? – nrofis

+0

いくつかの**良い**チュートリアルから始めてください... https://stackoverflow.com/tags/jsf/infoを参照してください。これは基本的なことです。これらを読むことで、これともっと多くのことを知ることができます。 。 – Kukeltje

答えて

0

は、あなたがどこにもUI側を更新するためにそれを教えてくれないので

<h:inputSecret id="pwd" value="#{info.password}" redisplay="true"> 
    <f:ajax event="focus" listener="#{info.changePassword}" render="pwd"/> 
</h:inputSecret> 
+0

Worked!ありがとうございました! – nrofis

+1

私はあなたが私のために同じことをすることを知っています。どういたしまして。 – AsSiDe

関連する問題