上个星期五寝室闹电荒,还有几度电了。一个周末都不敢开电脑。今天星期一,冲了电,舒服,有电了。O(∩_∩)O哈哈~。
晚上吃了饭,回来打开struts的文档,看到了 本地化输出。做了点小小的实验,记下来。
接下来的图片我都自己加上了水印。csdn的博客还没有自动加水印的功能。
我今天做的实验是……,直接上数据了,看了就知道了。申明:基本的struts那些概念我懂了。
总共有两个页面(一个是登陆页面,一个是登陆成功页面),一个action,一个struts.xml,properties文件,然后还有些文件,做到哪里的时候再说。
既然是本地化输出,肯定先说最核心的文件,本地方属性配置文件,properties文件。
LoginAction.properties
看到了撒,这个就是我写的一个简单的配置文件,其中:
定义了三个测试用消息,
定义了一个登陆成功消息,
定义了两个字段名,
定义了一个要求字段为空错误消息。
${getText(fieldName)}这个看清楚不要弄错了,刚开始我就弄错了。
这个文件该放在哪里了?
我开始也这样想了下。文档肯定有说的。
here:
上面的一个1,2,3,4,5,6,7.是struts搜寻properties文件的顺序。
瞧:1.是一个以action 的名作为properties文件的名称。
然后的一些大家看看。
注:package.properties文件用的貌似还是多,然后第7个 global文件——其实就是struts.properties文件。要是前面六个都没有搜索到。就用全局的properties文件。
我取的名字是根据action来的。所以我把这个文件放在action的class文件的同一目录下面。后面还是什么baseclass,interface 那些那些,你就放在这些java的class文件的目录下嘛(我是这样依葫芦画瓢的)。
然后是jsp页面:
login.jsp:
大家可能会看到里面取得三个测试消息的方法不一样,确实不一样。这个是struts提供的三种方式。
test1,使用的是text 标签。
test2,使用的是property 配合getText。
test3,使用的是I18N标签。它使用的格式是:
"some.package_name" >
"some.key" />
然后后面textfield里面的一个是使用的getText方法,还有一个是使用的key属性。
接下来:
done.jsp
不再赘述。
struts.xml:
web.xml:
LoginAction-validation.xml:
LoginAction.java:
我想这些我不用多讲了撒,如果不懂的话,看看我以前的学习笔记嘛,如:namespace,validator等等。。。
运行试试:
呵呵,竟然有错误。官方文档时这种做的,我也是这样做的,怎么会有错。
不管,什么都不填,提交下:
更奇怪的事情,难道这的是长相问题:
看哪个sex竟然是大写的。
查查原来的地方,看笔误没有?
jsp里面:
注:那个getText方法前面的 百分号 我是安装文档上面说的来的,我换成$符号试过,编译报错:label里面不能有表达式。
properties里面:
required=sorry , ${getText(fieldName)} is required.
没有错的嘛,都是取得fieldName。怎么这样对我。
算了,我填个数据提交下试试:
我提交:
对的了。
怎么回事?
为什么刚刚开始的时候,我的那个login页面上没有字,白的?
为什么我提交以后就用了?
为什么我那个SEX是大写的?
我是按照文档来的啊?
为什么?为什么?为什么?为什么?为什么?为什么?
算咯,明天问老师。
先把这几个问题记下来。
待续。。。。。。。。。。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
上面那些问题,我貌似有点明白了,但是一直都没有来改,今天一下想去了,来把写完。
为什么刚刚开始的时候,是什么都没有,而点击了后就有了。
因为执行了action。框架就把所有要用的信息读出来了。
因为我这个是开始页面,就是我们平时的index 页面,第一次请求时并没有执行action。而本地化是针对于一个action的(这个例子我是这
样做的)。对于这种初始页面,最好是放在struts.properties文件里面。