【发布时间】:2010-10-06 08:37:50
【问题描述】:
让我们考虑一下这个简单的代码:
<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(...)" />
现在,我只是在我的<h:inputText> 的onchange 事件中添加一些内容:
<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:support> 在event 上工作,这已经在input 中定义?当然,解决方案必须同时运行onchange 和 Ajax 调用中定义的Javascript 代码。
换句话说,我想要以下 HTML:
<input id="myForm:myInput" type="text" name="myForm:myInput" onchange="alert('foobar'); A4J.AJAX.Submit(...)" />
我正在使用 Richfaces 3.3.2 和 JSF 1.2
编辑
当然,我可以在<a4j:support> 的onsubmit 属性中移动onchange Javascript 代码,这样做:
<h:inputText id="myInput">
<a4j:support onsubmit="alert('foobar');" event="onchange" actionListener="#{myBean.doSomething}"/>
</h:inputText>
但这是唯一的方法吗??
【问题讨论】: