- i18n拦截器
- i18n拦截器的参数
- i18n拦截器示例
i18n拦截器为你的应用程序提供多语言支持。
它处理操作的设置区域设置。如果用户想要设置他/她的语言环境并根据提供的语言环境获取数据, 则可以使用它。
默认情况下, 它位于defaultStack中, 因此你不必显式指定它。
i18n拦截器的参数
为i18n拦截器定义了2个参数。两者都是可选的。
Parameter | Description |
---|---|
parameterName | 它指定HTTP请求参数的名称。默认情况下, 它设置为request_locale。 |
attributeName | 指定用于存储语言环境的会话密钥的名称。默认为WW_TRANS_I18N_LOCALE。 |
i18n拦截器示例
在此示例中, 我们将创建以下页面:
- Login.java
- Login_en.properties和Login_hi.properties
- struts.xml
- index.jsp
- login-success.jsp
1)创建动作类
要使用i18n拦截器, 你需要扩展实现TextProvider的ActionSupport类。
Login.java
package com.srcmini;
import com.opensymphony.xwork2.ActionSupport;
public class Login extends ActionSupport{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String execute(){
return SUCCESS;
}
}
2)创建属性文件
现在在包内创建2个属性文件。其名称应为actionname_languagecode.properties。
Login_en.properties
login.msg=Good Morning!
Login_hi.properties
login.msg=Suprabhat!
3)创建index.jsp作为输入
该jsp页面使用struts UI标记创建表单。它从用户那里接收名称。
index.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:form action="login">
<s:textfield name="name" label="Name"></s:textfield>
<!--
<s:textfield name="request_locale" label="Language Code"></s:textfield>
-->
<s:submit></s:submit>
</s:form>
在struts.xml中定义动作
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="abc" extends="struts-default" >
<action name="login" class="com.srcmini.Login" method="execute">
<result name="success">/login-success.jsp</result>
</action>
</package>
</struts>
4)创建视图组件
现在使用文本标签获取数据。在i18n中使用。
login-success.jsp
<%@ taglib uri="/struts-tags" prefix="s" %>
Welcome, <s:property value="name"/>
<br>
Message is: <s:text name="login.msg"></s:text>
Eclipse IDE中的目录结构
下载这个在Eclipse IDE中开发的示例(无jar)
下载在Myeclipse IDE中开发的此示例
输出
现在让我们更改语言代码。在这里, 我们使用的是chrome浏览器。
点击设置。
现在, 单击显示高级设置。
现在, 单击语言并输入设置。
现在, 添加印地文语言并将其移至顶部, 然后单击”完成”。
如果再次运行该应用程序, 它将显示印地文消息。
如果在index.jsp文件中使用request_locale属性名, 则将根据给定的语言代码显示消息。
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:form action="login">
<s:textfield name="name" label="Name"></s:textfield>
<s:textfield name="request_locale" label="Language Code"></s:textfield>
<s:submit></s:submit>
</s:form>
让我们看一下输出。
评论前必须登录!
注册