Struts2 <s:i18n>標籤示例
Struts2 <s:i18n>標籤是用來從聲明的資源包獲得消息, 不只是使用當前操作相關聯的資源包。看下面一個完整的<s:i18n>標籤的例子:
1. 動作
Action類轉發請求。
I18nTagAction.java
package com.yiibai.common.action;
import com.opensymphony.xwork2.ActionSupport;
public class I18nTagAction extends ActionSupport{
public String execute() throws Exception {
return SUCCESS;
}
}
2. 屬性文件
兩個屬性文件作爲演示。
I18nTagAction.properties
i18n.msg = "This is a message from I18nTagAction.properties"
Custom.properties
i18n.msg = "This is a message from Custom.properties"
3. <s:i18n>標籤示例
下面顯示<s:i18n>標籤的使用。
i18n.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
Struts2 標籤示例 - www.yiibai.com
1.Get message from I18nTagAction.properties
Output :2.Get message from Custom.properties
Output :它是如何工作的?
1.在示例1中,它會得到來自資源包的消息(I18nTagAction.properties)這是關想當前的操作類 (I18nTagAction.java)
2.在例2中,它會從「Custom.properties」屬性的文件得到消息,這個文件放在 com/yiibai/common/action/ 文件
不要放 .properties 後綴
一個常見的錯誤,在國際化的標籤,如果聲明屬性名爲.properties後綴的文件,在Struts2將未能從聲明的資源包獲得消息。
錯誤的方式:
<s:i18n name="com/yiibai/common/action/Custom.properties">
<s:text name="i18n.msg" />
正確的方式 :
聲明的屬性文件沒有 .properties 後綴。
<s:i18n name="com/yiibai/common/action/Custom">
<s:text name="i18n.msg" />
4. struts.xml
<action name="i18nTagAction"
class="com.yiibai.common.action.I18nTagAction" >
<result name="success">pages/i18n.jsp</result>
</action>
</package>
5. 示例
http://localhost:8080/struts2i18ntag/i18nTagAction.action
在瀏覽器中打開上面的URL,顯示結果如下: