让我们考虑一下这个简单的代码:
<h:form id="myForm">
<h:inputText id="myInput">
<a4j:support event="onchange" actionListener="#{myBean.doSomething}"/>
</h:inputText>
</h:form>
这将生成以下HTML代码:
<input id="myForm:myInput" type="text" name="myForm:myInput" onchange="A4J.AJAX.Submit(...)" />
现在,我只是在
onchange
我的事件
<h:inputText>
:
<h:form id="myForm">
<h:inputText id="myInput" onchange="alert('foobar');">
<a4j:support event="onchange" actionListener="#{myBean.doSomething}"/>
</h:inputText>
</h:form>
这将生成以下HTML代码:
<input id="myForm:myInput" type="text" name="myForm:myInput" onchange="alert('foobar');" />
如您所见,Ajax代码是
不加
不再。就我而言,这是一种非常奇怪的行为。为什么
<a4j:support>
如果事件已在输入字段中定义,则不附加Ajax调用?
所以我的问题是如何使
<A4J:支持& GT;
工作在一个
event
已在中定义的
input
?当然,解决方案必须同时运行在
换上
和
Ajax调用。
换句话说,我希望有以下HTML:
<input id="myForm:myInput" type="text" name="myForm:myInput" onchange="alert('foobar'); A4J.AJAX.Submit(...)" />
我使用的是RichFaces 3.3.2和JSF 1.2
编辑
当然,我可以移动
换上
中的javascript代码
onsubmit
的属性
<A4J:支持& GT;
做类似的事情:
<h:inputText id="myInput">
<a4j:support onsubmit="alert('foobar');" event="onchange" actionListener="#{myBean.doSomething}"/>
</h:inputText>
但这是唯一的办法吗??