日历

2008 7.7 Mon
  12345
6789101112
13141516171819
20212223242526
2728293031  
«» 2008 - 7 «»

文章搜索

日志文章

2007年12月25日 18:28:16

Struts ActionMessage html:errors可以不用资源文件

struts ActionMessage html:errors 可以不用资源文件 [转]
原文如下:
http://blog.csdn.net/srx/archive/2005/10/06/492918.aspx
前天我看了一个人的帖子,问Struts不使用资源文件能不能创建ActionMessage并用<html:errors。。>显示,我开始觉得不行。但是看了ErrorTag源码,原来是可以不用资源文件的。


代码
ErrorsTag.
if (report.isResource()) {
message =
TagUtils.getInstance().message(
pageContext,
bundle,
locale,
report.getKey(),
report.getValues());
} else {
message = report.getKey();
}


说明,是可以不使用资源文件的。
再看,ActionMessage构造方法,

代码
new ActionMessage( String value, boolean isResource );


只要这样构造就不用资源文件,

代码
ActionMessage msg = new ActionMessage("随便写",false);


之后把

代码
ActionMessages errors = ..
errors.add( "mykey",msg)
...


最后页面上使用

代码
<html:errors property="mykey"/>


这样就输出了
"随便写"。
所以,结论是,可是不用资源文件使用ActionMessage,以及<html:errors>

//=============================================================================
http://blog.hunan2s.com/article.asp?id=319

 在Struts中我们用html:errors标签在JSP页面上输出验证过程中产生的错误信息,错误信息一般来自于消息资源文件(xxx. properties文件,一般位于classes目录下,文本文件),当然错误信息也可以是不是资源文件中的文本消息,而是自定义的文本。接下来将详细讲述。

  先来看一个简单例子

1、资源文件错误信息来源(其格式为 key = value )

error.test = this is a test error.

2、JSP页面中用于显示错误信息标签

<html:errors property="testerror"/>

3、ActionFormBean的validate()方法中产生错误信息

ActionErrors error = new ActionErrors();

error.add("testerror",new ActionMessage("error.test"))

return error;


  这个例子的功能就是在ActionForm Bean的validate()方法中产生一条名为:testerror的错误信息,错误信息息是资源文件中key为error.test的值。然后在页面上用html:errors标签输出testerror这条错误信息。

  这是最常用的一种功能,所有的错误信息都在资源文件里面。

  有人会问,错误信息只能存放在资源文件中吗,其实不是这样。不需要资源文件也可以产生错误信息。

  我们再来看一下ActionMessage的另一种构造方法:

  ActionMessage(String key,boolean isresource)

  如果isresource值为true,则表示key是资源文件中的key,产生的消息就是与key相对应的消息
  如果isresource值为false,则表示key为一条普通的消息。

  如果上面的error.add改为error.add("testerror",new ActonMessage("这是一条自定义消息",false",));那么页面上显示的将是:这是一条自定义消息.

  另外还可以用ActionMessage产生复合消息,比如我们要输出:xxx不能用作用户名,其中xxx是一个变量。

  首先我们在资源文件中加一个条复合消息

  testmsg = {0}不能用作用户名。这里{0}是要被替换的参数。

  我们再来看一下ActionMessage的另一中构造方法
  ActionMessage(String key,Object value0);

  也就是说用value0的值来替换{0}

  我们修改error.add为error.add("testerror",new ActonMessage("testmsg","毛泽东"))

  那么JSP页面上将显示:毛泽东不能用作用户名。

  当然在一条复合消息中也可带多个参数,参数依次为{0},{1},{2}或更多
  例如:loginUser = 用户名:{0} 姓名:{1} 登录次数:{2}.....
  那么在产生错误消息时就用new ActionMessage(String key,Object value0,Object value1,Object value2.....)或者使用对象数组new ActionMessage(String key,Object[] values)
  

  String[] detail = {"Admin","王晶","12"};
  error.add("testerror",new ActionMessage("loginUser",detail))

Tags: Action   Message   Struts  

类别: 技术专栏 |  评论(0) |  浏览(1404) |  收藏
发表评论