我技术浅薄,可写的东西实在太少,今天刚好搭建了一下开发框架,就把这些写出来共享,顺便留作以后参考。
转载请申明原创作者【selfimpr】。
涉及的问题主要有两个:
1. 自动异常处理:struts支持的配置异常处理,采用自己定义的异常处理系统中的所有自定义异常。
2. 国际化:一时半会想不出怎么解释,自己查查吧。
首先,看自动异常处理:
先定义自己的异常类
定义自己的异常的处理类.
在struts-config.xml文件中配置异常的处理方式:
这里不要忘记最底下指定国际化资源文本的名字哦
这样异常处理的"后台就做完了"
定义好我们需要的测试页面之后,在action中的调用中,我们模拟一个异常:
让我们来看看MessageResource.properties中的内容(MessageResource.properties放到类路径下就可以了,也就是我们开发的时候的src目录,部署之后的/WEB-INF/classes目录), 不用关注其他的信息,看我用# here标注的那几个我们用到的那几行.
这样,我们在最后的异常转向页面,也就是error.jsp中用一句<html:errors />就可以拿到异常信息了
注意,在error.jsp中使用<html:errors />标签的时候需要引入相关的taglib
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %>
其实上面已经涉及了国际化的处理了,但是,我在做国际化处理的时候,发现我改了浏览器的语言,他也给我不变.
我就做了一个filter
下面具体看看我的国际化处理方式:
首先,定义我们的国际化过滤器,主要是用来获取浏览器中定义的语言选项,然后设置到struts中,让struts获取相应的国际化资源文本.
在web.xml中配置这个filter的时候,采用/*配置uri-pattern就可以了,让它去过滤所有的请求.
这样,就已经基本完工了,具体的其他代码,可以看看我上传的这个项目的源码.
地址在:http://download.youkuaiyun.com/source/1162430.
另外,提一个思路:
对于国际化而言,用户往往并不是希望固定的看浏览器语言设定的那一种语言的.这样,我们其实可以像google那样让用户可以选择语言.
这个的实现思路是:
用一个ThreadLocal保存每个用户选择的Locale信息,还是用过滤器.