`
weigang.gao
  • 浏览: 482326 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

struts1.1 <html:errors /> 与<html:messages /> 的使用

 
阅读更多

在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>

测试结果:我是徐艳蓉 数据采集失败... 我是徐艳蓉数据采集失败...

 

 

 

参考资料: http://www.blogjava.net/iNeo/articles/25978.html

分享到:
评论

相关推荐

    Struts标签库 ppt教程

    表单相关的标签,如`&lt;html:form&gt;`、`&lt;html:text&gt;`、`&lt;html:password&gt;`、`&lt;html:textarea&gt;`、`&lt;html:hidden&gt;`、`&lt;html:radio&gt;`、`&lt;html:checkbox&gt;`、`&lt;html:multibox&gt;`、`&lt;html:select&gt;`、`&lt;html:submit&gt;`、`...

    Struts提供的和Form相关的标签 .rar

    9. `&lt;bean:define&gt;`和`&lt;bean:write&gt;`标签:虽然不是Struts的一部分,但常与Struts一起使用。`&lt;bean:define&gt;`用于在JSP页面中定义变量,`&lt;bean:write&gt;`则用来输出Bean的属性值。 通过以上这些标签,开发者可以方便地...

    struts2 标签库 帮助文档

    &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. &lt;s:a href=""&gt;&lt;/s:a&gt;-----超链接,类似于html里的&lt;a&gt;&lt;/a&gt; 3. &lt;s:...

    Struts 中用Html 标签库的用法(第一部分).rar

    Struts HTML标签库提供了许多与HTML元素对应的标签,如`&lt;html:text&gt;`、`&lt;html:password&gt;`、`&lt;html:submit&gt;`等。这些标签不仅简化了代码,还能自动绑定到ActionForm对象的属性,如: ```jsp ...

    Struts2标签列表及说明

    * &lt;s:actionerror&gt;:如果 action 的 errors 有值那么显示出来 * &lt;s:actionmessage&gt;:如果 action 的 message 有值那么显示出来 * &lt;s:append&gt;:添加一个值到 list,类似于 list.add(); * &lt;s:autocompleter&gt;:自动完成...

    Struts原理、开发及项目实施

    errors/&gt;&lt;br/&gt;&lt;html:form action="/regUserAction" focus="logname"&gt;&lt;br/&gt;&lt;table border="0" width="100%"&gt;&lt;br/&gt; &lt;tr&gt;&lt;br/&gt; &lt;th align="right"&gt;&lt;br/&gt; Logname:&lt;br/&gt; &lt;/th&gt;&lt;br/&gt; &lt;td align="left"&gt;&lt;br/&gt; ...

    struts2常用标签

    `&lt;s:generator&gt;` —— 与 `&lt;s:iterator&gt;` 配合使用 - **功能**:配合`&lt;s:iterator&gt;`标签使用,用于生成迭代器。 - **示例**: ```xml &lt;s:generator separator="," val="item"&gt; &lt;s:iterator value="items"&gt; &lt;s:...

    OA 办公自动化, DAO登陆设计

    &lt;FONT color="red" size="3"&gt;&lt;html:errors/&gt;&lt;/FONT&gt; &lt;table&gt; &lt;html:form action="/login.do" method="post"&gt; &lt;tr&gt; &lt;td&gt; 用户名 &lt;/td&gt; &lt;td&gt; ...

    struts 标签

    &lt;html:errors/&gt; ``` 在这个例子中,`&lt;html:form&gt;`创建了表单,`&lt;html:text&gt;`创建了输入字段,并将输入值绑定到ActionForm的username和email属性。`&lt;html:submit&gt;`定义了一个提交按钮,点击后会触发"registerUser....

    struts1标签及实例

    - `&lt;html:form&gt;`:创建一个与ActionForm对象关联的表单,通常包含一个action属性,用于指定提交后处理请求的Action。 - `&lt;html:text&gt;`、`&lt;html:password&gt;`、`&lt;html:textarea&gt;`:分别用于创建文本输入框、密码...

    C++ Standard Library: A Tutorial and Reference

    Input/Output Using Stream Classes&lt;br/&gt;&lt;br/&gt;13.1 Common Background of I/O Streams&lt;br/&gt;&lt;br/&gt;13.2 Fundamental Stream Classes and Objects&lt;br/&gt;&lt;br/&gt;13.3 Standard Stream Operators &lt;&lt; and &gt;&gt;&lt;br/&gt;&lt;br/&gt;13.4 ...

    oa办公系统基于ssh+Sql Server

    &lt;form name="form1" action="login.do" method="post"&gt; &lt;table width="300" border="1"&gt; &lt;tr&gt; &lt;td colspan="2"&gt;&lt;bean:message key=...&lt;html:errors property="org.apache.struts.action.GLOBAL_MESSAGE" /&gt;&lt;/form&gt;

    structs入门经验谈

    &lt;html:errors/&gt; &lt;html:form action="/regUserAction" focus="logname"&gt; &lt;table border="0" width="100%"&gt; &lt;tr&gt; &lt;th align="right"&gt;Logname:&lt;/th&gt; &lt;td align="left"&gt; ...

    Struts标签手册

    - 使用`&lt;html:errors&gt;`标签来显示全局错误,以及`&lt;logic:messagesPresent&gt;`来显示ActionForm级别的错误信息。 - 在处理表单数据时,利用`&lt;html:checkbox&gt;`, `&lt;html:radio&gt;`和`&lt;html:select&gt;`等标签,确保数据绑定...

    struts 标签库 .

    Struts标签库是Java开发Web应用时常用的一个组件,它为Apache Struts框架提供了一组自定义的JSP标签,极大地简化了视图层的开发,使得开发者能够更专注于业务逻辑,而不是繁琐的HTML和Java代码混合。Struts标签库...

    Struts2常用标签

    - **用途**:与&lt;s:iterator&gt;标签一起使用,用于数据生成。 - **示例**: ```xml &lt;s:generator separator="," value="%{#list}" /&gt; ``` 22. **&lt;s:head&gt; 头部标签** - **用途**:在&lt;head&gt;标签内使用。 - **...

    如何自定义Struts2表单验证后的错误信息显示格式/样式_第二话

    Display Error Info in errors (一般不会使用到[1], 这里仅是测试):&lt;s:textfield/&gt; &lt;font color="red"&gt;&lt;s:property value="errors.displayErrorInfo[1]"/&gt;&lt;/font&gt;&lt;br&gt; &lt;hr&gt; 3.1. Display Error Info in ...

    JSTL详细标签库介绍

    ------------异常处理程序&lt;BR&gt;&lt;BR&gt;12.5一个异常处理的简单实例:除数为0&lt;BR&gt;&lt;BR&gt;需求:使用一个小应用程序,完成两数相除的计算&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;分析:&lt;BR&gt;我们使用有顶向下,逐步求精的...

    Mobile Atlas Creator.exe

    &lt;ignoreErrors&gt;true&lt;/ignoreErrors&gt; &lt;url&gt;&lt;![CDATA[http://t{$serverpart}.tianditu.cn/DataServer?T=cia_w&X={$x}&Y={$y}&L={$z}]]&gt;&lt;/url&gt; &lt;serverParts&gt;0 1 2 3 5 6 7&lt;/serverParts&gt; &lt;backgroundColor&gt;#...

    Struts2标签库详解

    Struts2的UI标签还支持其他一些功能,如验证(通过`&lt;s:fielderror&gt;`和`&lt;s:errors&gt;`展示错误信息)、国际化(使用`&lt;s:text&gt;`和`s:resourcebundle`处理多语言)和主题样式(通过`cssClass`属性应用样式)。此外,...

Global site tag (gtag.js) - Google Analytics