java - FacesMessages 和 rich :effect?

标签 java jsf performance seam richfaces

我希望能够使用 JSF/Seam/RichFaces 进行 Ajax 调用,并使用相关的 h:messages 组件更新页面。这没有问题。我能够执行适当的重新渲染。但是,我也希望能够利用 rich:effect 使它更漂亮一些。理想情况下,我希望能够让消息淡入然后在用户单击它们时消失。但是,到目前为止,我一直无法使它正常工作。

有没有人让这样的场景起作用?有比我更了解 JSF/Seam 的人有什么好的建议吗?提前致谢!

最佳答案

虽然我不关心 rich:effect,但我确实这样做了。

我使用 jQuery。这是个人喜好,但我发现它比使用 rich:effect(基于 Scriptaculous)更容易和直接。值得快速浏览一下 jQuery Effects documentation .

一个例子:

将 jquery 添加到您的页面(richfaces 附带):

<a:loadScript src="resource://jquery.js"/>

为方便起见,将 jQuery 分配给 $j(将其添加到您的 javascript 中):

$j = jQuery.noConflict();

消息部分:

<a:outputPanel id="messagetextPanel" ajaxRendered="true" layout="block" style="z-index:100; display:none;">
    <s:div styleClass="messagetext" rendered="#{not empty facesContext.maximumSeverity}">
        <h:messages infoClass="infomessage" errorClass="errormessage" warnClass="warningmessage" layout="list" />
        <s:div styleClass="messageClose">
            <a onclick="hideMessages();">#{messages['messages.close']}</a>
        </s:div>
    </s:div>
</a:outputPanel>

一些用于隐藏和显示 div 的 javascript:

function hideMessages() {
  $j("div#messagetextPanel").fadeOut("slow");
}
function showMessages() {
  $j("div#messagetextPanel").fadeIn("fast");
}

现在您只需要找出在完成调用时调用 showMessages() 的最佳方法(例如,在您的 a4j:commandButton 等上使用 oncomplete)。

我个人更喜欢不影响 div 的显示,这样我就可以使用 ajaxRendered 来处理所有事情。您可以通过将第一行替换为:

<a:outputPanel id="messagetextPanel" ajaxRendered="true" layout="block" style="z-index:100; display: #{empty facesContext.maximumSeverity ? 'none' : 'block'};">

这样一来,我的按钮/链接/支持上就不需要任何代码,当我的后端代码决定创建一个时,FacesMessages 将始终显示。

关于java - FacesMessages 和 rich :effect?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2760832/

相关文章:

linux - 根据性能计数器将程序分类为计算密集型

java - 服务器套接字中的线程和处理程序

java - 使用 Jackson 不断解析一堆字符串的最有效方法是什么?

java - Spring + Jboss7 @Transactional 不工作

Android 慢 GridView

c++ - 在 map 中找到第 N 个最常出现的键

java - 不常见的数学图书馆可以信任吗?

java - XML 文件出错 - Android(解析 XML 时出错 : not well-formed (invalid token))

jsf - JSF 页面中的动态操作

java - JSF 运行时页面名称传递