您的位置:首页 > 编程语言 > Java开发

一个小型Struts系统开发过程中的笔记整理

2006-07-20 10:56 411 查看
之前在GL的督促下用Struts做了一个简单的HR系统。其间有过许多问题,现在归纳一下,希望对看到的人有所帮助。

笔者以前也用Struts开发过一个系统,那时候Struts的版本是1.1,现在1.2了,发现有一点区别。这次开发最开始的问题就是在这一点上。

首先有关于消息提示部分的内容。在Action中,saveErrors(String, ActionError)已经被废弃了,但是saveErrors(String, ActionMessage)还是可用的。而很多时候,为了区分错误消息和提示消息, 还可以用saveMessages(String, ActionMessage)处理相关内容。

同时我发现,无论用saveErrors还是savaMessages, <html:errors/>标签都是可用来提取消息的。不怕麻烦的话,用:

<html:messages id="msg" message="false">
<bean:write name="msg" />
</html:messages>

这样的方式,可以将错误(error) 消息和提示(message) 消息显式区分开来。当然了,我一向是怕麻烦的,所以直接用<html:errors>就可以了。不过心中有些疑惑,Struts提供<html:errors/>和<html:messages/>这两个标签,理论上应该是希望前者用来描述错误消息,后者用来描述提示消息吧?不知道是不是我用法上还有些问题?

另外,需要提醒的一点是,我用的是Struts 1.2.4,而现在最新的1.2.9似乎有一些莫名其妙的问题。建议现在应用的话,不要选择这个最新的版本。

第二个是Validator应用的问题。在Struts 1.2.9中(其实是从1.2.7开始), Validator-rules.xml文件的定义有了一些区别。主要是很多函数多了一个org.apache.commons.validator.Validator的参数,如果使用之前版本的Validator.xml文件,可能会报NoSuchMethodException——参数少了一个,方法自然就找不到了。。而在1.2.4的版本中,这个问题是没有的。

第三个是Tiles涉及的问题。受Html中Frame的影响,我本来想找到一种可以实现Tiles中某个页面部分刷新的方法。(比如在有左右两部分的页面,单击左链接,刷新右侧页面)而事实证明,这是不可能的。我猜测的原因是Tiles的整体页面已经在Server端编译成servlet,而Html是无需编译的脚本。不得已,只有采用正页面刷新的方式。(不知道有没有别的方法?知道的请指教)

第四是单表单多按钮时(LookupDispatchAction),利用Validator验证,需要单独写ValidatorForm的validate函数,因为也许不同的按钮需要的表单验证是不一样的。这里提供一份代码样本:

public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
String parameter = mapping.getParameter();
if( parameter != null ) {
// Identify the method name to be dispatched to.
String name = request.getParameter(parameter);
MessageResources resources =
(MessageResources) request.getAttribute(Globals.MESSAGES_KEY);
// Identify the localized message for the cancel button
String message = resources.getMessage("empmng.modify.deletebutton");
// if message resource matches the cancel button then no
// need to validate
if( name != null && name.equals(message) ) {
return null;
}
}
// perform regular validation
return super.validate(mapping, request);
}

暂时先写这些吧,还有收录的几个小技巧,我会写在另一片文章里
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐