※多個struts.xml
一個專案常很多人開發,每個人都有一份struts.xml,所以會衝到,可以利用如下方法整合:<struts> <include file="struts-a.xml" /> <include file="struts-b.xml" /> </struts>
可以加很多的include,我的struts-a.xml複製後改名struts-b.xml居然可以run,
因為package的name,namespace,action的name完全一樣,
如果前端要求aaa.action,那到底是哪一個會起作用,所以這是不好的設計,所以多人開發時,必需先開會討論好名稱會比較好
※資源文件
之前的Action裡的顯示訊息是寫死的,必需把它搬出來有三種方式:
.在同一個package下,和class名稱相同的properties
.同一個package共用的properties,必需叫package.properties
.全域的properties:前面兩個很少用,主要用這一個,要在struts.xml設定
.如果不按照以上的規則走,也不會有錯誤,只是錯誤訊息會變成key,
也就是super.getText()裡面的字
先測第一種同class名稱的
LoginAction.properties:
login.success=login success login.failure=login fail
Action也要改:
@Override public String execute() throws Exception { if (userName.equals("aaa") && userPassword.equals("123")) { displayMessage = super.getText("login.success"); return ActionSupport.SUCCESS; } else { displayMessage = super.getText("login.failure"); return Action.INPUT; } }
測過後,將LoginAction.properties改成package.properties再測一次
最後在新增一個package,將properties剪過去,看有沒有用,我是測失敗,所以是正常的
※國際化
也就是改中文就顯示中文,改英文就顯示英文瀏覽器可以改語言,我現在IE是用11版,和以前的版本的設定不太一樣
在src下新增properties,我是maven,所以是在src/main/java下
將剛剛的properties copy過來改,如下:
testMessage_en_US.properties:
login.success=login success login.failure=login fail
testMessage_zh_TW.properties:
login.success=\u767b\u9304\u6210\u529f login.failure=\u767b\u9304\u5931\u6557中文自行用native2ascii.exe工具
加好後,struts.xml也要設定
首先先打開struts2-core-2.x.x.jar裡的org.apache.struts2,有個default.properties
找到struts.custom.i18n.resources,複製起來
然後在struts.xml加上constant
<struts> <constant name="struts.custom.i18n.resources" value="testMessage" /> <package name="basicstruts2" extends="struts-default" namespace="/struts2"> <action name="login" class="login.LoginAction" method="execute"> <result name="success">/struts2/login.jsp</result> <result name="input">/struts2/login.jsp</result> </action> </package> </struts>value為zh_TW前面的名稱
constant也可以在src/main/java下新增一個叫struts.properties(一定要這樣取),然後將
struts.custom.i18n.resources=testMessage貼進去即可
也就是default.properties有兩種實作方式,個人感覺用struts.properties較好,
因為properties對應properties;而struts.xml就管其他的部分就好了
記得測試全部都是從action轉jsp哦
亂碼的部分,因為default.properties裡的struts.i18n.encoding,預設已經打開,而且是UTF-8,所以就不用設了
沒有留言:
張貼留言