2012-08-15 71 views
1

我目前正在使用IceFaces 1.8,並一直試圖找到一種簡單的方法來鏈接UI組件上的效果。例如,我在頁面右上方有一個「顯示幫助」鏈接。點擊後,幫助文本將顯示在用戶的某些控件下方。我希望這個文本通過滑下來然後突出顯示。IceFaces 1.8中的EffectQueue和鏈接效果

我有我的豆返回true或false基本isRenderHelp()方法,並用它來渲染使用的<ice:effect>標籤fire屬性的效果,所以它看起來是這樣的:

<ice:effect effectType="slidedown" fire="#{myBean.renderHelp}">

<ice:effect effectType="slideup" fire="#{!myBean.renderHelp}">

當幫助鏈接切換bean中的renderHelp標誌時,這可以使幫助部分滑入和滑出。第一次單擊鏈接之前renderHelp返回null是一個小例外,以防止在第一次頁面呈現時觸發滑動動畫。

現在,我注意到通過1.8的展示代碼看到有一個EffectQueue類擴展了效果。這使我可以將多重效果添加到我的bean中的隊列中,並從getEffect方法中返回隊列,然後我可以將該方法分配給panelGroup effect屬性。但是,儘管設置了優先級,但它不會執行隊列中的事件。我確信我沒有正確使用它,我想知道它應該如何使用。

通常我會使用jQuery來處理這種類型的事情,但UI使用了很多部分提交。我們的頁面通過Liferay portlet顯示,所以任何partialSubmit視圖都會重新渲染,撤銷jQuery對DOM的任何修改。

那麼在IceFaces 1.8中有什麼簡單的方法來鏈接效果?建議?

回答

3

這裏是我如何實現effectQueue以顯示和淡入文本。

private EffectQueue effectQueue; 
public Effect getSaveSettingsEffect() { 
    return effectQueue; 
} 
public void fireEffect(ActionListener e) { 
    if(effectQueue == null) { 
     effectQueue = new EffectQueue("apperAndFade"); 
     Appear appear = new Appear(); 
     appear.setDuration(2); 
     effectQueue.add(appear); 
     Fade fade = new Fade(); 
     fade.setDuration(3); 
     effectQueue.add(fade); 
     effectQueue.setTransitory(true); 
    } 
    effectQueue.setFired(false); 
} 

的facelet:

<ice:commandButton value="fireEffect" action="#{bean.fireEffect}"/> 
<ice:outputText value="text" style="display: none;" effect="#{bean.effectQueue}"/> 
+0

謝謝,我給這個一杆。 我可以通過使用多個綁定到'ApplyEffectTag'的''標籤並在標籤上設置'sequence'和'sequenceId'屬性來鏈接幾個。然後在我的bean中,我只是點擊鏈接時觸發'fired'標誌。但是,我們的表單使用了很多部分提交,所以效果在每次刷新後都會觸發。理想情況下,一旦顯示該部分,需要保持顯示狀態,直到用戶再次切換爲止。 我會試一試並回傳。 – framauro13 2012-08-16 13:35:41

+0

將此標記爲接受的答案,因爲它確實有效並回答了我的問題。 我遇到的問題是IceFaces不保留partialSubmits之間的對象的狀態。在Miha的例子中,想象一下按鈕切換'outputText'。點擊按鈕顯示它,然後點擊按鈕隱藏它。如果顯示文本,則另一個頁面控件執行部分提交,文本回到隱藏狀態;由效果對DOM所做的修改不會被保留。我認爲這是「暫時性」財產的目的,但似乎沒有效果。 謝謝! – framauro13 2012-08-16 15:09:46