2011-01-20 13 views
7

मैं अपने ऐप में एक जेएसएफ तत्व के साथ rich:effect का उपयोग करना चाहता हूं लेकिन चीजों के AJAX पक्ष के साथ थोड़ा परेशानी हो रही है।समृद्ध: प्रभाव उपयोग समस्या

नीचे दिए गए अनुसार, मेरे पास h:outputText तत्व है जिसमें एक जेएसएफ संदर्भित मान (#{MyBacking.sysMsg}) है जो ऐप के साथ उपयोगकर्ता अनुभव के दौरान बदलता है। चूंकि rich:effect तत्व जावास्क्रिप्ट ईवेंट का उपयोग करता है, नीचे दिया गया कोड निर्दिष्ट नहीं करता है।

मैंने a4j का उपयोग करने का प्रयास किया है: 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" /> 

मुझे लगता है कि इस के लिए एक सरल जवाब होने के लिए बाध्य है, लेकिन मैं अपने सिर में या नेट पर जवाब खोजने के लिए प्रतीत नहीं कर सकते हैं:

कोड इस प्रकार है। क्या कोई मेरी मदद कर सकता है?

उत्तर

1

सर्वरसाइड परिवर्तनों के आधार पर पाठ को अपडेट करने के लिए आपको <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> 
पाठ्यक्रम हर दूसरे और मूल्य बदल गया है केवल जब नहीं पर प्रकाश डाला जाएगा की

यह। केवल परिवर्तन पर हाइलाइट करने के लिए आप शायद कस्टम जावास्क्रिप्ट/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:effecta4j:poll

+0

आपकी मदद के लिए धन्यवाद - मैं दोनों ajaxed पैनलों और कोई लाभ नहीं हुआ div कोशिश की है। – volvox

+0

मैंने सर्वरसाइड मान परिवर्तनों की अपनी आवश्यकताओं को पूरा करने के लिए अपना उत्तर अपडेट किया। – morja

संबंधित मुद्दे