如何从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
答案 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:您可以使用HttpServletRequest
或PortletRequest
添加错误(例如{{1} }})。当您通过actionRequest
添加时,您必须使用ActionRequest
参数PortletRequest
,而不是SessionErrors.doSomething
。在JSP上,HttpServletRequest
是request
,而HttpServletRequest
是renderRequest
。这是你想要用来获得结果的那个。