簡體   English   中英

豐富:效果使用問題

[英]rich:effect usage problem

我想在我的應用程序中使用一個帶有JSF元素的rich:effect ,但是在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" />

我認為這肯定會有一個簡單的答案,但我似乎無法在腦海中或網上找到答案。 誰能幫我?

要根據服務器端更改更新文本,您必須使用<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>

這當然會突出每一秒,而不僅僅是當價值發生變化時。 要僅突出顯示更改,您可能更好地使用自定義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>

以下是示例: Exadel Demo和文檔: rich:effect a4j:poll

問題

[英]problem with <rich:combobox

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM