我目前正在使用IceFaces 1.8,并且一直在尝试找到一种在UI组件上链接效果的简单方法。例如,我在页面右上角有一个“显示帮助”链接。单击时,帮助文本将显示在用户的某些控件下方。我希望通过向下滑动然后突出显示此文本。
我的bean上有一个基本的isRenderHelp()
方法返回true或false,并使用它来使用fire
标记上的<ice:effect>
属性渲染效果,所以它看起来像这样:
<ice:effect effectType="slidedown" fire="#{myBean.renderHelp}">
<ice:effect effectType="slideup" fire="#{!myBean.renderHelp}">
这会导致帮助部分滑入和滑出,因为帮助链接会切换bean中的renderHelp标志。有一个小异常,即renderHelp在第一次单击链接之前返回null,以防止在第一页渲染上触发幻灯片动画。
现在,我注意到通过1.8的展示代码查看了一个扩展了Effect的EffectQueue
类。这允许我将mutliple Effects添加到我的bean中的队列,并从getEffect
方法返回队列,然后我可以将其分配给panelGroup effect
属性。但是,尽管设置了优先级,但它不会执行队列中的事件。我确定我没有正确使用它,我想知道它应该如何使用。
通常我会将jQuery用于此类事情,但UI会使用许多部分提交。我们的页面通过Liferay portlet显示,所以在任何partialSubmit上重新渲染视图,撤消jQuery对DOM的任何修改。
那么在IceFaces 1.8中有任何简单的链接效果方法吗?建议?
答案 0 :(得分: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}"/>