JSF自定义组件未更新AJAX

时间:2016-04-14 16:20:52

标签: ajax jsf composite-component

我正在试图弄清楚如何扩展BalusC的inputDate示例here。我希望组件更新其中一个下拉列表的每个更改的值并触发一个事件,如下所示:

<balusc:inputDate value="#{myBean.date}">
    <p:ajax event="valueChange" update="someOtherComponent"/>
</balusc:inputDate>
<h:outputText id="someOtherComponent" value="#{myBean.formattedDate}"/>

someOtherComponent取决于#{myBean.date}更新时更新的值。 (参见update=并发症末尾的注释。)

我认为这需要修改inputDate组件,首先在<cc:interface>部分宣布它有valueChange行为,如下所示:

<cc:clientBehavior name="valueChange" targets="day month year" event="change"/>

这会使事件触发,但仅仅更新值是不够的,我不知道要改变什么以使其更改值并触发事件。所以问题是:

如何为复合组件添加实时更新其值的功能,以便它们可用于AJAX事件?

我正在运行的环境是Windows 7,Java 1.7.0_80,Tomcat 7.0.68及其版本的EL,JSF Mojarra 2.2.8-14,jstl 1.2,Eclipse Mars.2(4.5.2)。

P.S。我注意到,在使用f:ajaxp:ajax添加render=update=元素时,很难让外部组件刷新。即使是:#{component.namingContainer.parent.namingContainer.clientId}:someOtherComponent的丑陋的解决方法也行不通,但是非常混乱的:#{component.namingContainer.clientId.substring(0, component.namingContainer.clientId.lastIndexOf(':'))}:someOtherComponent会这样做。

0 个答案:

没有答案