JSF 2.0,Mojarra 2.0.1,PrimeFaces 3.4.1
这是一个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!");
}
当按下输入键时它是调用方法但它有多于此; 意外行为案例
--Click input text
----Type some letters
------Click somewhere else in the page
--------CONSOLE: Pressed enter!
我认为ajax event=change
会以某种方式检测到更改并调用该方法。如何将此p:inputText
组件转换为适当的评论接受者组件,如Facebook或其他人?
答案 0 :(得分:32)
这是onchange
事件在HTML中的工作方式。当输入元素中的文本发生更改时会发生这种情况,但是当组件失去焦点时会触发(在您的情况下,当您单击页面中的其他位置时)。
您可以为p:remoteCommand
方法定义test
,然后只写:
<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!");
}