打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Struts第3天

LookupDispatchAction

这个类今天让我弄了半天才搞定了!还有一些问题还没弄完,先总结下吧!

LoopupDispatchAction是扩展了dispatchAction这个类,我们会考虑到在URL路径上面加上?method=方法名这种方式感觉不是很良好,而LoopupDispatchAction就是来解决这个问题,并且,提供了国际化的功能!

好了,先说看下我们的Action的书写,示例:

  1. //写的测试类,里面有俩个方法 一个添加删除,然后会有两个按钮提交过来  
  2. public class UserAction extends LookupDispatchAction  
  3.     //添加方法  
  4.     public ActionForward add(ActionMapping mapping, ActionForm form,  
  5.             HttpServletRequest request, HttpServletResponse response)  
  6.             throws Exception  
  7.         response.setCharacterEncoding("gbk");  
  8.         response.getWriter().println("添加");  
  9.         return null 
  10.      
  11.     //删除方法  
  12.     public ActionForward del(ActionMapping mapping, ActionForm form,  
  13.             HttpServletRequest request, HttpServletResponse response)  
  14.             throws Exception  
  15.         response.setCharacterEncoding("gbk");  
  16.         response.getWriter().println("删除");  
  17.         return null 
  18.      
  19.       
  20.     //重写getkeyMethodMap  
  21.     protected Map getKeyMethodMap()  
  22.         Map map new HashMap();  
  23.         map.put("user.add""add");  
  24.         map.put("user.del""del");  
  25.         return map;  
  26.      
  27.       
  28.  
  29. 提示一下,在这里我们必须重写getKeyMethodMap方法,它的返回值是一个MAP集合key是国际化文件的key,value是指方法名!然后是xml的配置文件<action path="/user" type="com.lovo.action.UserAction" parameter="m"name="userform"></action> 

 提示,这里必须关联formbean,也就是说name属性必须书写,如果不写会报Cannotretrieve definition for form bean null on action user.do
不能检索空表单bean定义的行动user.do这个错误!因为是提交表单所以表单必须写,哪怕是formbean里面没有任何属性。

最后是jsp页面的书写:

  1. <html:form action="user.do" method="post">  
  2.         <html:submit property="m">  
  3.             <bean:message key="user.add"/>  
  4.         </html:submit>  
  5.         <html:submit property="m">  
  6.             <bean:message key="user.del"/>  
  7.         </html:submit>  
  8.     </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 methodmap 

动作[/用户]失踪的关键方法地图资源  的错误!郁闷啊,希望赶紧解决此问题吧!

郁闷,新浪博客说我的字太多,想骂人了,没办法分俩篇发吧!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Struts中FormBean与国际化
使用 Easy Struts for Eclipse 开发 Struts
Struts2(Webwork2)一些实战开发技巧
struts原理与实践(8)
SSH开发网上商店过程中遇到的16个问题
Struts教程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服