@Ellie:我试过了两个< a4j:ajax event =“click”action =“doiListView”/>和< f:ajax event =“click”action =“doiListView”/>,但没有任何反应. (片段)代码是这样的:
<td style="font-size: 5pt; border: 0; min-width:60px"> <rich:calendar id="creationToDate" value="#{listModel.creationDate.rangeEnd}" datePattern="yyyy-MM-dd" enableManualInput="true" rendered="#{listModel.creationDate.range}" valuechangelistener="#{listController.filterFieldChanged}"> </rich:calendar> </td> <td rowspan="2"> <h:selectBooleanCheckBox value="#{listModel.creationDate.range}"> <a4j:ajax event="click" action="doiListView"/> </h:selectBooleanCheckBox> </td>
如果选中该复选框,则应该可以看到日期选择器.但是根据你的提示,没有任何反应……
如果我在selectBooleanCheckBox标签中添加onclick =“window.location.href = window.location.href”,那么它可以工作,但正如我所说的,如果可能的话我想使用RF组件……
解决方法
在这种情况下,您需要将execute属性设置为@form,以便提交整个表单(默认为@this,当前组件),您还需要将render属性设置为@all以便整个视图将被重新渲染(或者如果仅重新渲染表单就足够使用@form).
<h:selectBooleanCheckBox value="#{listModel.creationDate.range}"> <f:ajax event="click" execute="@form" render="@all" /> </h:selectBooleanCheckBox>
event =“click”在上面的构造中是可选的.它已经是< h:selectBooleanCheckBox>的默认ajax事件.你可以离开它:
<h:selectBooleanCheckBox value="#{listModel.creationDate.range}"> <f:ajax execute="@form" render="@all" /> </h:selectBooleanCheckBox>
此外,您的操作属性无效.它不存在.如果您确实想在调用操作阶段调用方法,则需要使用listener属性.
<h:selectBooleanCheckBox value="#{listModel.creationDate.range}"> <f:ajax execute="@form" listener="#{listModel.rangeListener}" render="@all" /> </h:selectBooleanCheckBox>
同
public void rangeListener() { // ... }
或者,如果您需要能够broadcast events:
public void rangeListener(AjaxBehaviorEvent event) { // ... }
< a4j:ajax>的语法相同.唯一的区别是它解决了执行和渲染方式的不同,并支持更方便的属性.
也可以看看:
> <f:ajax>
VDL documentation
> <a4j:ajax>
VDL documentation
> Is there any difference between f:ajax and a4j:ajax?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。