【问题标题】:How to access Liferay's SessionErrors object from JSP?如何从 JSP 访问 Liferay 的 SessionErrors 对象?
【发布时间】:2015-04-21 16:16:32
【问题描述】:

如何从 JSP 访问 SessionErrors 对象?我试过了

<%@page import="com.liferay.portal.kernel.servlet.SessionErrors"%>

<%= SessionErrors.contains(request, "error-invalid-value") %> <br>
<%= SessionErrors.size(request) %>

但结果为 false 和 0。但是,错误标记工作正常(它显示抛出的错误)。

<liferay-ui:error key="error-invalid-value" message="error-invalid-value" />

在我的控制器中,我设置了这样的错误:

//request is an ActionRequest.
SessionErrors.add(request, "error-invalid-value");

我正在尝试测试是否抛出了“error-invalid-value”错误。

如果有帮助,这里是标签的源代码(我无法理解其中的任何内容):https://github.com/liferay/liferay-portal/blob/master/util-taglib/src/com/liferay/taglib/ui/ErrorTag.java

【问题讨论】:

    标签: java jsp liferay liferay-6 jsp-tags


    【解决方案1】:

    使用它的一种方法是

    <liferay-ui:error key="error-invalid-value" 
       message="translation-key-for-the-message-to-be-shown" />
    

    如果您像问题中所说的那样调用了SessionErrors.add,这将显示引用的消息。否则什么都不会显示。

    另一种使用它的方式(因为它只是静态方法)它只是在 scriptlet 或您自己的标签中使用它的常规接口:

    <% if(SessionErrors.size(renderRequest) > 2) { %>
       Wow, you have triggered a lot of errors
    <% } %>
    

    查看完整的interface of SessionErrors 以查找更多选项以查找特定错误、访问整个密钥集或其他信息

    更新:在您的 cmets 之后,我再次尝试并实际上错过了 SessionErrors 的 PortletRequest 参数:您可以使用 HttpServletRequestPortletRequest 添加错误(例如 actionRequest)。当您通过ActionRequest 添加时,您必须使用PortletRequest 参数到SessionErrors.doSomething,而不是HttpServletRequest。在 JSP 上,requestHttpServletRequest,而 renderRequestPortletRequest。这就是您想要使用的结果来获得结果。

    【讨论】:

    • 是的,这就是我使用它来显示错误的方式。但是,我需要根据是否存在错误对标记做其他事情(例如打开模式)。有没有办法以某种方式在 if 条件中使用错误数量?
    • 糟糕 - 抱歉,现在我正在重新阅读这个问题。将不得不调查。该接口提到了一个 HttpServletRequest,否则我会假设 PortletRequest(例如 ActionRequest)和 ServletRequest 之间不匹配,但情况似乎并非如此 - 至少在接口方面。请继续关注,不能立即执行...
    • 我完全错过了 SessionErrors 接口的 PortletRequest 版本。请参阅我对 JSP sn-p 的更新和最后一段解释
    猜你喜欢
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 2017-08-03
    • 2016-05-08
    • 1970-01-01
    • 2011-02-26
    相关资源
    最近更新 更多