分享

Struts第3天

 liuyang_inf 2014-08-26

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属性必须书写,如果不写会报Cannot retrieve 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 method map 

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

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多