vol*_*vox 7 javascript java ajax jsf richfaces
我想rich:effect在我的应用程序中使用带有JSF元素,但是在AJAX方面遇到了一些麻烦.
根据下面的内容,我有一个h:outputText具有JSF引用值(#{MyBacking.sysMsg})的元素,该元素在用户体验应用程序时会发生变化.由于rich:effect元素使用javascript事件,因此指定下面的代码不起作用.
我已经尝试过使用a4j:支持ajaxify h:outputText元素,但这似乎也被忽略了.用户不会点击任何按钮 - sysMsg变量在其他地方更新,我想突出显示对受众的更改.
代码如下:
<h:outputText value="#{MyBacking.sysMsg}" id="sysMsg" style="#{MyBacking.colour}" />
<rich:effect event="onchange" type="Highlight" params="duration:0.8" />
<rich:effect event="onchange" for="sysMsg" type="Appear" params="delay:3.0,duration:0.5" />
Run Code Online (Sandbox Code Playgroud)
我认为这肯定会有一个简单的答案,但我似乎无法在脑海中或网上找到答案.谁能帮我?
要根据服务器端更改更新文本,您必须使用<a4j:poll>或<a4j:push>。
例如:
<rich:effect name="highlight" for="sysMsg" type="Highlight" params="duration:0.8" />
<h:form>
<a4j:poll id="poll" interval="1000" reRender="sysMsg" oncomplete="highlight();"/>
</h:form>
Run Code Online (Sandbox Code Playgroud)
这当然会突出显示每一秒,而不仅仅是当值发生变化时。要仅在更改时突出显示,您可能最好使用自定义 javascript/jquery 函数,记住值并在更改时调用突出显示。
这是一个可能的解决方案:
<h:form id="form">
<a4j:region renderRegionOnly="true">
<h:outputText value="#{MyBacking.sysMsg}" id="sysMsg" style="#{MyBacking.colour}" />
<a4j:poll id="poll" interval="1000" reRender="sysMsg" oncomplete="checkChange();" limitToList="true"/>
</a4j:region>
<rich:effect name="highlight" for="sysMsg" type="Highlight" params="duration:0.8" />
</h:form>
<script>
var value = $('form:sysMsg').textContent ;
function checkChange(){
if($('form:sysMsg').textContent != value){
highlight();
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
以下是示例:Exadel 演示和文档:rich:effect a4j:poll
| 归档时间: |
|
| 查看次数: |
706 次 |
| 最近记录: |