LookupDispatchAction
这个类今天让我弄了半天才搞定了!还有一些问题还没弄完,先总结下吧!
LoopupDispatchAction是扩展了dispatchAction这个类,我们会考虑到在URL路径上面加上?method=方法名这种方式感觉不是很良好,而LoopupDispatchAction就是来解决这个问题,并且,提供了国际化的功能!
好了,先说看下我们的Action的书写,示例:
- //写的测试类,里面有俩个方法 一个添加删除,然后会有两个按钮提交过来
- public class UserAction extends LookupDispatchAction {
-
//添加方法
-
public ActionForward add(ActionMapping mapping, ActionForm form,
-
HttpServletRequest request, HttpServletResponse response)
-
throws Exception {
-
response.setCharacterEncoding("gbk");
-
response.getWriter().println("添加");
-
return null;
-
}
-
//删除方法
-
public ActionForward del(ActionMapping mapping, ActionForm form,
-
HttpServletRequest request, HttpServletResponse response)
-
throws Exception {
-
response.setCharacterEncoding("gbk");
-
response.getWriter().println("删除");
-
return null;
-
}
-
-
//重写getkeyMethodMap
-
protected Map getKeyMethodMap() {
-
Map map = new HashMap();
-
map.put("user.add", "add");
-
map.put("user.del", "del");
-
return map;
-
}
-
- }
-
提示一下,在这里我们必须重写getKeyMethodMap方法,它的返回值是一个MAP集合key是国际化文件的key,value是指方法名!然后是xml的配置文件<action path="/user" type="com.lovo.action.UserAction" parameter="m"
name="userform"></action>
提示,这里必须关联formbean,也就是说name属性必须书写,如果不写会报Cannot
retrieve definition for form bean null on action user.do
不能检索空表单bean定义的行动user.do这个错误!因为是提交表单所以表单必须写,哪怕是formbean里面没有任何属性。
最后是jsp页面的书写:
- <html:form action="user.do" method="post">
-
<html:submit property="m">
-
<bean:message key="user.add"/>
-
</html:submit>
-
<html:submit property="m">
-
<bean:message key="user.del"/>
-
</html:submit>
-
</html:form>
当然,前提是导入struts的html和bean的标记库才可以使用,我们来看在<html:submit property="m">
submit里面的property的值刚好对应了action的配置中的parameter的值,<bean:message key="user.del"/>
这个里面我们用了bean:message是用于输出国际化文件的内容,这里的key当然也就对应了国际化文件的key值了!
好了,最后,来看下国际化文件:
国际化文件 ApplicationResources.properties
user.add=add
user.del=del
然后自己写一个中文的国际化文件 ApplicationResources_zh_CN.properties
user.add=\u6DFB\u52A0
user.del=\u5220\u9664
这里写了2个国际化文件,第一个国际化文件也是放到跟第一个一样的目录里面,它的名字的定义也必须这样定义,那么,Struts才能读取到它里面的值,这个就是标准,它会先根据你的操作系统的语言来找看有没有相对应的国际化文件,如果只中文的话,那么就会来找结尾是_zh_CH结尾的,如果没有才会找第一个国际化文件。
小问题,中文的按钮名字显示了,但是点击按钮后会报出一个:
Action[/user] missing resource in key method
map
动作[/用户]失踪的关键方法地图资源
的错误!郁闷啊,希望赶紧解决此问题吧!
郁闷,新浪博客说我的字太多,想骂人了,没办法分俩篇发吧!
|