org.apache.struts.actions.LookupDispatchAction类别是 DispatchAction 类别的子类,与DispatchAction类似的是,它透过请求上的参数来决定该执行哪一个方法,不过LookupDispatchAction多了查 询讯息资源档案的功能,LookupDispatchAction的用处之一,就是当一个表单中包括两个以上的按钮时,可以透过查询讯息资源档来确定相对 应的动作。 直接以实例来说明,在继承LookupDispatchAction之後,您要重新定义getKeyMethodMap()方法,并定义好自己的相关处理方法,例如: EditAction.java package onlyfun.caterpillar;import javax.servlet.http.*; import org.apache.struts.action.*; import org.apache.struts.actions.*;public class EditAction extends LookupDispatchAction { protected Map getKeyMethodMap() { Map map = new HashMap(); map.put("button.save", "save"); map.put("button.preview", "preview"); map.put("button.reset", "reset"); return map; } public ActionForward save(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // ...... } public ActionForward preview(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // ...... } public ActionForward reset(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // ...... } } 假设讯息资源档中包括以下的讯息: messages.properties button.save=Savebutton.preview=Previewbutton.reset=Reset 为了要使用LookupDispatchAction,在struts-config.xml中定义请求参数中该有的名称: struts-config.xml ...
... 现在假设您的表单页面包括以下的内容: ...
... 当您按下任一个按钮时,请求参数中会包括method=Save或是method=Preview或是method= Reset,假设是method=Save好了,LookupDispatchAction会根据它作为value,在讯息资讯档找到对应的key,然後 根据key与getKeyMethodMap()得知要执行的方法为save()方法。 那么关於国际化讯息管理的部份呢?例如想要在表单按钮上使用中文? ...
... 一样的,您的讯息档案中必须包括下面的内容: messages.properties button.save=存档button.preview=预览button.reset=重设 然後,您要使用native2ascii将讯息档案转换为Unicode编码,例如: native2ascii messages_zh_TW.txt messages_zh_TW.properties 接下来的问题是,浏览器发送过来的中文参数,为了要能正确的解析,要使用request的 setCharacterEncoding("Big5"),这样才能得到正确的中文参数,但是在什么地方作这个动作?您可以在Servlet Filter中作这件事,另一个可能的地方则是 ActionForm 的reset()方法中,例如: package onlyfun.caterpillar; public class UserForm extends ActionForm { ...... public void reset(ActionMapping mapping, HttpServletRequest request) { try { request.setCharacterEncoding("Big5"); ....... } catch(Exception e) { .... } } } 这样您的按钮就可以使用中文讯息了。 如果您愿意的话,可以搭配使用
来使用上述的功能,直接由标签来管理讯息档案中的讯息。
struts的lookupDispatchAction的使用
最新推荐文章于 2017-11-07 23:58:00 发布