在2005年Apache正式推出Struts 1.2后,有许多东西已经被改变。其中很重要的一个改动就是与<html:errors>标记相关的改动,主要就是已经不再推荐使用ActionError类和ActionErrors类,因此,如果要将现有的使用到与<html:errors>标记相关的代码从Struts 1.1下移至Struts 1.2下,需要作以下改动。
1. 将代码中使用到ActionError类的地方换为ActionMessage类。
2. 将除了在ActionForm的validate()方法以外使用到ActionErrors类的地方都替换为ActionMessages。
这样做的主要原因是,ActionError是ActionMessage的子类,而ActionErrors是ActionMessages的子类。开发者认为一个错误消息也是消息的一种,并没有必要专门将其分开存放。只需要使用Globals.MESSAGE_KEY,Globals.ERROR_KEY来进行区分就分。
在struts1.1中的使用
1.html:messages说明:
1.ActionMessages中每一个key对应一个List
2.id属性:遍历ActionMessages时代表一个ActionMessage,可以随意瞎写,这个要与bean:write搭配使用
3.property属性: 指定ActionMessages(ActionErrors)中一个key,这样就可以只显示这个key对应List的了。 如果不指定property属性,那么就是遍历所有的。
eg:Action代码:
public class LoginAction extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { UserForm userForm = (UserForm) form; String username = userForm.getUsername(); String password = userForm.getPassword(); //ActionMessages与ActionMessage是struts1.1中新添加的,并不能像在struts1.2中那样使用。 //在struts1.1中使用ActionErrors没问题。使用ActionMessages有问题 ActionErrors errors = new ActionErrors(); errors.add("error1", new ActionError("login.error.error1")); errors.add("error2", new ActionMessage("login.error.error2")); // struts1.1中 不能使用这? 在struts1.2以上高版本中就可以使用 // errors.add("error3", new ActionMessage("数据采集失败...", false));//在页面中取不出来 // this.saveMessages(request, errors); this.saveErrors(request, errors); return mapping.findForward("error"); } }
JSP页面获取信息的方式:
这里如果不使用property属性的话,会将key为error1与error2对应List中的数据全部取出来显示 <html:messages id="error" property="error2"> <bean:write name="error"/> </html:messages>
2.html:errors说明:
Java代码:
public class LoginAction extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { UserForm userForm = (UserForm) form; String username = userForm.getUsername(); String password = userForm.getPassword(); System.out.println("username :" + username); System.out.println("username :" + password); //ActionMessages与ActionMessage是struts1.1中新添加的,并不能像在struts1.2中那样使用。 //在struts1.1中使用ActionErrors没问题。使用ActionMessages有问题。所以干脆使用ActionErrors ActionErrors errors = new ActionErrors(); errors.add("error1", new ActionError("login.error.error1")); errors.add("error2", new ActionMessage("login.error.error2")); // struts1.1中 使用 不正常? 在struts1.2以上高版本中 正常使用 // errors.add("error3", new ActionMessage("数据采集失败...", false));//在页面中取不出来 // this.saveMessages(request, errors); this.saveErrors(request, errors); return mapping.findForward("error"); } }
1. 放入ActionErrors中的ActionMessage对象,不能使用html:errors标签来取,只能使用html:messages标签来取,否则会报错。
eg:需要通过html:message来取
errors.add("error2", new ActionMessage("login.error.error2")); //放入ActionErrors中的是一个ActionMessage对象
JSP代码:
<html:messages id="message" property="error2"> <bean:write name="message"/> </html:messages>
2.放入ActionErrors中的ActionError对象,既能使用html:errors来获取,也能使用html:messages标签来取。
errors.add("error1", new ActionError("login.error.error1")); //放入ActionErrors中的是一个ActionError对象
JSP代码:
property属性:指定ActionErrors中的一个key,这样就可以只显示这个key对应的List的了
<html:errors property="error1"/>
或者
<html:messages id="message" property="error1"> <bean:write name="message"/> </html:messages>
2.在struts1.2中的使用
在struts1.2中已经不推荐使用ActionErrors与ActionError了,所以简化了编写代码。
资源文件:login.error.error2=我是徐艳荣
JAVA代码:
public class LoginAction extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { UserForm userForm = (UserForm) form; String username = userForm.getUsername(); String password = userForm.getPassword(); System.out.println("username :" + username); System.out.println("username :" + password); ActionErrors errors = new ActionErrors(); // 从struts1.2开始不推荐使用了 ActionMessages messages = new ActionMessages();// 从struts1.2开始,不管错误还是提示信息,推荐统一使用这个 messages.add("error2", new ActionMessage("login.error.error2")); // struts1.1中使用 不正常,在struts1.2中没问题 messages.add("error3", new ActionMessage("数据采集失败...", false)); this.saveErrors(request, messages); // this.addErrors(request, messages); //在struts1.2中正常 // this.addMessages(request, messages);//在struts1.2中取不出来 // this.saveMessages(request, messages);//在struts1.2中取不出来 return mapping.findForward("error"); } }
JSP代码:可以通过如下2种方式获取:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> 这种方式打印出来信息间是有空格的 <html:messages id="message"> <bean:write name="message"/> </html:messages> 这种方式打印出来的信息间是没空格的 <html:errors/> </body> </html>
测试结果:我是徐艳蓉 数据采集失败... 我是徐艳蓉数据采集失败...
相关推荐
<%@ taglib prefix="s" uri="/struts-tags" %> 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. <s:a href=""></s:a>-----超链接,类似于html里的<a></a> 3. <s:...
表单相关的标签,如`<html:form>`、`<html:text>`、`<html:password>`、`<html:textarea>`、`<html:hidden>`、`<html:radio>`、`<html:checkbox>`、`<html:multibox>`、`<html:select>`、`<html:submit>`、`...
9. `<bean:define>`和`<bean:write>`标签:虽然不是Struts的一部分,但常与Struts一起使用。`<bean:define>`用于在JSP页面中定义变量,`<bean:write>`则用来输出Bean的属性值。 通过以上这些标签,开发者可以方便地...
Struts HTML标签库提供了许多与HTML元素对应的标签,如`<html:text>`、`<html:password>`、`<html:submit>`等。这些标签不仅简化了代码,还能自动绑定到ActionForm对象的属性,如: ```jsp ...
* <s:actionerror>:如果 action 的 errors 有值那么显示出来 * <s:actionmessage>:如果 action 的 message 有值那么显示出来 * <s:append>:添加一个值到 list,类似于 list.add(); * <s:autocompleter>:自动完成...
errors/><br/><html:form action="/regUserAction" focus="logname"><br/><table border="0" width="100%"><br/> <tr><br/> <th align="right"><br/> Logname:<br/> </th><br/> <td align="left"><br/> ...
`<s:generator>` —— 与 `<s:iterator>` 配合使用 - **功能**:配合`<s:iterator>`标签使用,用于生成迭代器。 - **示例**: ```xml <s:generator separator="," val="item"> <s:iterator value="items"> <s:...
<FONT color="red" size="3"><html:errors/></FONT> <table> <html:form action="/login.do" method="post"> <tr> <td> 用户名 </td> <td> ...
<html:errors/> ``` 在这个例子中,`<html:form>`创建了表单,`<html:text>`创建了输入字段,并将输入值绑定到ActionForm的username和email属性。`<html:submit>`定义了一个提交按钮,点击后会触发"registerUser....
- `<html:form>`:创建一个与ActionForm对象关联的表单,通常包含一个action属性,用于指定提交后处理请求的Action。 - `<html:text>`、`<html:password>`、`<html:textarea>`:分别用于创建文本输入框、密码...
Input/Output Using Stream Classes<br/><br/>13.1 Common Background of I/O Streams<br/><br/>13.2 Fundamental Stream Classes and Objects<br/><br/>13.3 Standard Stream Operators << and >><br/><br/>13.4 ...
<form name="form1" action="login.do" method="post"> <table width="300" border="1"> <tr> <td colspan="2"><bean:message key=...<html:errors property="org.apache.struts.action.GLOBAL_MESSAGE" /></form>
<html:errors/> <html:form action="/regUserAction" focus="logname"> <table border="0" width="100%"> <tr> <th align="right">Logname:</th> <td align="left"> ...
- 使用`<html:errors>`标签来显示全局错误,以及`<logic:messagesPresent>`来显示ActionForm级别的错误信息。 - 在处理表单数据时,利用`<html:checkbox>`, `<html:radio>`和`<html:select>`等标签,确保数据绑定...
Struts标签库是Java开发Web应用时常用的一个组件,它为Apache Struts框架提供了一组自定义的JSP标签,极大地简化了视图层的开发,使得开发者能够更专注于业务逻辑,而不是繁琐的HTML和Java代码混合。Struts标签库...
- **用途**:与<s:iterator>标签一起使用,用于数据生成。 - **示例**: ```xml <s:generator separator="," value="%{#list}" /> ``` 22. **<s:head> 头部标签** - **用途**:在<head>标签内使用。 - **...
Display Error Info in errors (一般不会使用到[1], 这里仅是测试):<s:textfield/> <font color="red"><s:property value="errors.displayErrorInfo[1]"/></font><br> <hr> 3.1. Display Error Info in ...
------------异常处理程序<BR><BR>12.5一个异常处理的简单实例:除数为0<BR><BR>需求:使用一个小应用程序,完成两数相除的计算<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>分析:<BR>我们使用有顶向下,逐步求精的...
<ignoreErrors>true</ignoreErrors> <url><![CDATA[http://t{$serverpart}.tianditu.cn/DataServer?T=cia_w&X={$x}&Y={$y}&L={$z}]]></url> <serverParts>0 1 2 3 5 6 7</serverParts> <backgroundColor>#...
Struts2的UI标签还支持其他一些功能,如验证(通过`<s:fielderror>`和`<s:errors>`展示错误信息)、国际化(使用`<s:text>`和`s:resourcebundle`处理多语言)和主题样式(通过`cssClass`属性应用样式)。此外,...