2013-02-19 22 views
18

を入力すると、クロサギ科2.0.1は、ここPrimeFaces 3.4.1JSFプレスはJSF 2.0

入力するキーである場合バッキングBeanメソッドを呼び出すことが期待されるp:inputText成分である入力テキストからBeanメソッドを呼び出します押された

<p:inputText id="commentInput" rendered="#{status.haveComment}" 
    value="#{statusBean.newComment}" 
    onkeypress="if (event.keyCode == 13) { onchange(); return false; }"> 
    <f:ajax event="change" listener="#{statusBean.test}" /> 
</p:inputText> 

Beanをバックアップする方法がありますが:

public void test(AjaxBehaviorEvent event) { 
    System.out.println("Pressed enter!"); 
} 

Enterキーが押されたが、それはこれ以上のものを持っている場合には、メソッドを呼び出しています。 予期しない動作の場合:

--Click input text 
----Type some letters 
------Click somewhere else in the page 
--------CONSOLE: Pressed enter! 

私はajax event=changeは何とか変更を検出し、メソッドを呼び出すと思います。このp:inputTextコンポーネントをFacebookや他のユーザーのような適切なコメント入力コンポーネントに変換するにはどうすればいいですか?

答えて

30

これは、HTMLでonchangeイベントがどのように機能するかを示したものです。入力要素のテキストが変更されたときに発生しますが、コンポーネントがフォーカスを失った場合(ページ内の他の場所をクリックした瞬間です)に発生します。

あなたはtestメソッドのp:remoteCommandを定義し、ちょうど書くことができます。

<p:remoteCommand name="test" actionListener="#{statusBean.test}"/> 
<p:inputText id="commentInput" rendered="#{status.haveComment}" 
    value="#{statusBean.newComment}" 
    onkeypress="if (event.keyCode == 13) { test(); return false; }"/> 

とバッキングBeanで:

public void test() { 
System.out.println("Pressed enter!"); 
} 
+0

それは魅力のように働いています!ありがとう! –

+0

私はこの私の友人に関連する問題があります。[ここ](http://stackoverflow.com/q/14990692/1659451) –

+0

ありがとうございます。それは非常に役に立ちます。 –

関連する問題