如何以编程方式访问ActionErrors?

时间:2014-07-13 22:22:53

标签: struts struts-1

我知道如何创建ActionErrors,添加一些消息并在JSP页面中显示消息。 我认为ActionError就像一个错误消息列表。以下是我的系统使用威胁错误的方法:

我的行动

ActionErrors errors = new ActionErrors();
errors.add("customerId", new ActionError("error.customerId.required"));
this.saveErrors(request, errors);

我当前的JSP

<html:errors />

假设我想在JSP页面中创建错误消息的ArrayList(在Java中)。如何做到这一点 在我的行动中没有任何改变

我建议的JSP

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<%
    ArrayList<String> errMessage = new ArrayList<String>();
    //foreach (ActionErrors.message as message){
    //    errMessage.add(message);
    //}
%>
</body>
</html>

问候

1 个答案:

答案 0 :(得分:4)

动作

如果您将错误保存在request范围内,例如:

ActionErrors errors = new ActionErrors();
errors.add("usr", new ActionMessage("User required", false));
errors.add("pwd", new ActionMessage("errors.invalid", "Password"));
saveErrors(request, errors);

JSP

您可以在JSP中获取错误,以便按以下方式填充数组列表:

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.Iterator"%>
<%@page import="org.apache.struts.Globals"%>
<%@page import="org.apache.struts.action.ActionErrors"%>
<%@page import="org.apache.struts.action.ActionMessage"%>
<%@page import="org.apache.struts.util.MessageResources"%>
<%
ArrayList<String> errMessage = new java.util.ArrayList<String>();
ActionErrors errors = (ActionErrors) request.getAttribute(Globals.ERROR_KEY);
Iterator<ActionMessage> iterator = errors.get();
MessageResources resources = (MessageResources) request.getAttribute(Globals.MESSAGES_KEY);
while (iterator.hasNext()) {
    ActionMessage error = iterator.next();
    if (error.isResource()) {
        errMessage.add(resources.getMessage(error.getKey(), error.getValues()));
    } else {
        errMessage.add(error.getKey());
    }
}
%>

注意:此代码示例使用Struts 1.3.10。