7

我正在尝试在 Struts 中创建一个登录页面。这个想法是验证用户是否存在等,然后如果有错误,则返回登录页面,错误为红色(典型登录或任何表单页面验证)。

我想知道是否有人知道 Struts 中的错误管理教程。我正在寻找专门的教程(或示例)

<html:errors>

标签,我认为这可以解决我的问题。

4

3 回答 3

16

这是一个://struts.apache.org/1.3.5/struts-taglib/apidocs/org/apache/struts/taglib/html/package-summary.html#package_description

这里我假设 Struts 1。我不知道 Struts 2 是否发生了变化。

您可以将 errors.header 和 errors.footer 放入您的消息资源文件中:

errors.header=<h3><font color="red">Errors:</font></h3><ul>
errors.footer=</ul>

仅当 ActionErrors 对象中有任何错误时,才会显示页眉和页脚。

在您的 Action 类中,执行以下操作:

ActionErrors errors = new ActionErrors();
if (badInput) {
  errors.add(ActionErrors.GLOBAL_ERROR,
    new ActionError("error.bad.input", badString);    // key in messages resource file
                                    // badString will replace {0} in message
}

然后在返回之前:

saveErrors(request, errors);

在您的消息资源文件中:

error.bad.input=<li>Bad input:  '{0}' is invalid.</li>

现在当<html:errors/>标签被处理时,它会变成:

<h3><font color="red">Errors:</font></h3><ul>
<li>Bad input: 'xxyyzzz' is invalid.<li>
</ul>
于 2009-06-02T03:22:27.897 回答
10

这是一个快速的总结。你有一ActionForm堂课,说MyForm

<form-bean name="myForm" type="myapp.forms.MyForm"/>

你有一Action堂课,说MyAction

<action path="/insert" type="myapp.actions.MyAction" name="myForm"
   input="/insert.jsp" validate="true" />
  <forward name="success" path="/insertDone.jsp"/>
</action>

动作中的“name”指的是form-b​​ean中的“name”。因为你有validate="true"你的ActionFormMyForm必须定义validate()将自动调用的方法:

public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
  ActionErrors errors = new ActionErrors();
  if ((username==null) || (username.length() < 1)) 
      errors.add("username", new ActionError("error.username.required"));
  return errors;
}

如果它返回一个空的 ActionErrors 对象,Struts 会继续调用您的 MyAction.execute()。否则,Struts 将显示 /insert.jsp(因为这是您提供的 input= parm)并展开 html.errors 标记以显示来自 ActionErrors 的错误。

于 2009-06-04T16:40:59.200 回答
0

在struts动作中:

ActionErrors errors = new ActionErrors();
errors.add("", new ActionMessage("login.msg.err"));
saveErrors(request, errors);

“hello.msg.err”在 MessageBundle.properties 中定义

login.msg.err=Wrong user name or password

在您的 JSP 中,错误将由 h:errors 标签显示:

<h:errors/>

该视频逐步向您展示并为您解释所有这些内容: https ://youtu.be/YcCsJtqI72A

于 2019-05-12T15:26:53.673 回答