<html:errors> struts教程或示例</html:errors>

时间:2009-06-02 01:34:33

标签: java jsp struts struts-validation

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

我想知道是否有人知道Struts中的错误管理教程。我正在寻找

的教程(或示例)
<html:errors>

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

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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中的错误。

答案 2 :(得分:0)

在支撑动作中:

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