﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-季浩的Blog-随笔分类-Struts1</title><link>http://www.blogjava.net/jht/category/28962.html</link><description>努力</description><language>zh-cn</language><lastBuildDate>Tue, 15 Jan 2008 06:14:39 GMT</lastBuildDate><pubDate>Tue, 15 Jan 2008 06:14:39 GMT</pubDate><ttl>60</ttl><item><title>[转载]html:errors标签与ActionMessage和Struts资源文件指南</title><link>http://www.blogjava.net/jht/archive/2008/01/14/175312.html</link><dc:creator>jht</dc:creator><author>jht</author><pubDate>Mon, 14 Jan 2008 14:20:00 GMT</pubDate><guid>http://www.blogjava.net/jht/archive/2008/01/14/175312.html</guid><wfw:comment>http://www.blogjava.net/jht/comments/175312.html</wfw:comment><comments>http://www.blogjava.net/jht/archive/2008/01/14/175312.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jht/comments/commentRss/175312.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jht/services/trackbacks/175312.html</trackback:ping><description><![CDATA[<div class="item-content">在Struts中我们用html:errors标签在JSP页面上输出验证过程中产生的错误信息，错误信息一般来自于消息资源文件（xxx．properties文件，一般位于classes目录下，文本文件），当然错误信息也可以是不是资源文件中的文本消息，而是自定义的文本。接下来将详细讲述。 
<p>　　先来看一个简单例子</p><p>1、资源文件错误信息来源(其格式为 <font color="#ff0000" size="4">key = value</font> )<br />    <br />   <font color="#3366ff" size="4">error.test</font> = this is a test error.</p><p>2、JSP页面中用于显示错误信息标签<br />   <br />   &lt;html:errors <font color="#ff0000" size="4">property</font>="<font color="#ff0000" size="4">testerror</font>"/&gt;</p><p>3、ActionFormBean的validate()方法中产生错误信息</p><p>   ActionErrors error = new ActionErrors();</p><p>   error.add("<font color="#ff0000" size="4">testerror</font>",new ActionMessage("<font color="#3366ff" size="4">error.test</font>"))<br />   <br />   return error;</p><p> </p><p>　　这个例子的功能就是在ActionForm Bean的validate()方法中产生一条名为：<font color="#ff0000">testerror</font>的错误信息，错误信息息是资源文件中key为<font color="#3366ff">error.test</font>的值。然后在页面上用html:errors标签输出t<font color="#ff0000">esterror</font>这条错误信息。</p><p>　　这是最常用的一种功能，所有的错误信息都在资源文件里面。</p><p>　　有人会问，错误信息只能存放在资源文件中吗，其实不是这样。<font color="#0000ff" size="3"><strong>不需要资源文件也可以产生错误信息</strong></font>。</p><p>　　我们再来看一下ActionMessage的另一种构造方法:</p><p>　　<font color="#000080" size="4">ActionMessage(<font color="#ff00ff">String</font> key,<font color="#ff00ff">boolean</font> isresource)</font></p><p>　　如果isresource值为true,则表示key是资源文件中的key，产生的消息就是与key相对应的消息<br />　　如果isresource值为<font color="#ff0000" size="4">false</font>,<font color="#0000ff">则表示key为一条普通的消息。</font></p><p>　　如果上面的error.add改为error.add("testerror",<font color="#ff0000">new ActonMessage</font>("<font color="#0000ff">这是一条自定义消息",<font color="#ff0000">false</font></font>",));那么页面上显示的将是：这是一条自定义消息.</p><p><br />　　另外还可以用ActionMessage产生复合消息，比如我们要输出：xxx不能用作用户名，其中xxx是一个变量。</p><p>　　首先我们在资源文件中加一个条复合消息</p><p>　　<font color="#3366ff" size="3">testmsg </font>=<font color="#ff0000" size="4"> {0}</font>不能用作用户名。这里<font color="#ff0000" size="4">{0}</font>是要被替换的参数。</p><p>　　我们再来看一下ActionMessage的另一中构造方法<br />　　<font color="#0000ff">ActionMessage<font color="#0000ff">(String key,Object value0);</font></font></p><p>　　也就是说用<font color="#ff0000">value0</font>的值来替换<font color="#ff0000">{0}</font></p><p>　　我们修改error.add为error.add("testerror",<font color="#ff0000">new ActonMessage(<font color="#3366ff" size="3"><strong>"testmsg"</strong></font><font size="4">,</font><font color="#0000ff" size="3"><strong>"毛泽东"</strong></font></font><font color="#ff0000">)</font>)</p><p>　　那么JSP页面上将显示：毛泽东不能用作用户名。</p><p><br />　　当然在一条复合消息中也可带多个参数，参数依次为<font color="#0000ff" size="3">{0},{1},{2}或更多<br /></font>　　例如：<font color="#3366ff" size="4">loginUser = 用户名:{0} 姓名:{1} 登录次数:{2}.....<br /></font>　　那么在产生错误消息时就用new ActionMessage(String key,Object value0,Object value1,Object  value2.....)或者使用对象数组new ActionMessage(String key,Object[] values)<br />　　</p><p><font size="4">　　<font color="#3366ff">String[] detail = {"Admin","王晶","12"};<br />　　error.add("testerror",new ActionMessage("loginUser",detail))<br /></font></font><br /></p></div>
		<hr />
Note：<br /><br /><font color="#ff0000"><strong>Cannot find message resources under key org.apache.struts.action.MESSAGE  错误</strong></font>的原因是没有配置资源文件<br /><br />解决办法： 在struts-config.xml 中加入如下的一段<br /><br />&lt;message-resources parameter="application" null="false"&gt;&lt;/message-resources&gt;<br /><br /><br /><img src ="http://www.blogjava.net/jht/aggbug/175312.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jht/" target="_blank">jht</a> 2008-01-14 22:20 <a href="http://www.blogjava.net/jht/archive/2008/01/14/175312.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>