我最初在h:inputText字段中使用a4j:commandButton发布了一个值,但我不得不将commandButton更改为s:link,因为commandButton也触发了要导出的pdf文档,我相信ajax调用,文档在浏览器上呈现。
所以现在我尝试使用h:inputText和a4j:support
发布值<h:inputText id="numberOfPatients"
value="#{printLabelsReqFormsAction.numberOfPatients}">
<a4j:support event="onkeyup"
action="#{printLabelsReqFormsAction.setNumberOfPatients(numberOfPatients)}"/>
</h:inputText>
(抱歉奇怪的格式化..)
我的setNumberOfPatients(x)被调用,但我认为我没有正确传递该值。我应该如何传递h:inputText字段的值?
答案 0 :(得分:1)
执行ajax支持时,您无需显式设置numberOfPatients
的值。 a4j:support
标记在执行期间处理其父组件,这意味着将为每个numberOfPatients
事件设置onkeyup
的值,即使您没有调用action
事件。你可以在Richfaces' site找到更好的信息:
RichFaces使用基于表单的方法进行Ajax请求发送。这意味着每次单击Ajax按钮或生成异步请求时,最近的JSF表单中的数据都将与XMLHTTPRequest对象一起提交。表单数据包含表单输入元素中的值和辅助信息,例如状态保存数据。
当“ajaxSingle”属性值为“true”时,它命令仅包括当前组件的值(以及
<a4j:actionparam>
值,如果有的话)到请求映射。如果是<a4j:support>
,则它是父组件的值。下面是一个例子:
<h:form>
<h:inputText value="#{person.name}">
<a4j:support event="onkeyup" reRender="test" ajaxSingle="true"/>
</h:inputText>
<h:inputText value="#{person.middleName}"/>
</form>
换句话说,对于你的情况,这应该有效:
<h:inputText id="numberOfPatients"
value="#{printLabelsReqFormsAction.numberOfPatients}">
<a4j:support event="onkeyup" ajaxSingle="true"/>
</h:inputText>
仅当您要在事件发生时添加额外逻辑时才指定操作方法。