我试图做一个登录页面,在Struts中。我们的想法是,如果用户存在,等等,然后,如果有错误,则返回到登录页面与红色的误差(典型的登录或任何形式的页验证)来验证。

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

<html:errors>

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

有帮助吗?

解决方案

下面是一个简单的总结。你有一个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>

“名称”中的行动是指在形豆“名称”。因为你已经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对象,搭接着打电话给你MyAction.execute()。否则,Struts的显示/insert.jsp(因为这是输入= PARM你给),并扩大了html.errors标签从的ActionErrors显示你的错误。

其他提示

下面是一种: //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>

在支柱作用:

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所示:错误标记:

<h:errors/>

此视频显示你一步一步&解释您所有这些事情: https://youtu.be/YcCsJtqI72A

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top