如何从JSP访问Liferay的SessionErrors对象?

时间:2015-04-21 16:16:32

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

如何从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

1 个答案:

答案 0 :(得分: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以查找更多选项以查找特定错误,访问整个keySet或其他信息

更新:在您发表评论后,我再次尝试并错过了PortletRequest参数对SessionErrors:您可以使用HttpServletRequestPortletRequest添加错误(例如{{1} }})。当您通过actionRequest添加时,您必须使用ActionRequest参数PortletRequest,而不是SessionErrors.doSomething。在JSP上,HttpServletRequestrequest,而HttpServletRequestrenderRequest。这是你想要用来获得结果的那个。