这是一个Struts本地化示例,以指定的所选语言显示消息或内容。 默认情况下,Struts会将每个用户的Locale属性存储在其会话上下文中的键“ org.apache.struts.action.LOCALE ”下,您所需要做的就是使用该会话属性。
下载此Struts本地化示例– Struts-Localization-Example.zip
1.项目结构
这是项目结构。
2.属性文件
所有本地化消息都在属性文件中声明,格式为“ filename_locale_code.properties ”。 您可以在Java.Util.Locale类中检查语言环境代码。 例如
- 英文– Common.properties或Common_en_US.properties
- 中文– Common_zh_CN.properties
- 法国– Common_fr.properties
- 德语– Common_de.properties
通用属性
#error message
error.common.username.required = Username is required
error.common.password.required = Password is required
#label message
label.common.message = localization example
label.common.username = Username
label.common.password = Password
label.common.button.submit = Submit
Common_de.properties
#error message
error.common.username.required = Benutzername ist erforderlich
error.common.password.required = Passwort ist erforderlich
#label message
label.common.message = Lokalisierung Beispiel
label.common.username = Benutzername
label.common.password = Kennwort
label.common.button.submit = Einreichen
3.动作课
创建一个可扩展DispatchAction的操作类,以实现多个操作目的。
package com.mkyong.common.action;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.Globals;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
public class LanguageSelectAction extends DispatchAction{
public ActionForward chinese(ActionMapping mapping,ActionForm form,
HttpServletRequest request,HttpServletResponse response)
throws Exception {
request.getSession().setAttribute(
Globals.LOCALE_KEY, Locale.SIMPLIFIED_CHINESE);
return mapping.findForward("success");
}
public ActionForward english(ActionMapping mapping,ActionForm form,
HttpServletRequest request,HttpServletResponse response)
throws Exception {
request.getSession().setAttribute(
Globals.LOCALE_KEY, Locale.ENGLISH);
return mapping.findForward("success");
}
public ActionForward german(ActionMapping mapping,ActionForm form,
HttpServletRequest request,HttpServletResponse response)
throws Exception {
request.getSession().setAttribute(
Globals.LOCALE_KEY, Locale.GERMAN);
return mapping.findForward("success");
}
public ActionForward france(ActionMapping mapping,ActionForm form,
HttpServletRequest request,HttpServletResponse response)
throws Exception {
request.getSession().setAttribute(
Globals.LOCALE_KEY, Locale.FRANCE);
return mapping.findForward("success");
}
}
4.行动表格
创建一个操作表单以保存用户名和密码数据,并进行表单验证。
package com.mkyong.common.form;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
public class UserForm extends ActionForm{
String username;
String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if( getUsername() == null || ("".equals(getUsername())))
{
errors.add("common.username.err",
new ActionMessage("error.common.username.required"));
}
if( getPassword() == null || ("".equals(getPassword())))
{
errors.add("common.password.err",
new ActionMessage("error.common.password.required"));
}
return errors;
}
@Override
public void reset(ActionMapping mapping, HttpServletRequest request) {
// reset properties
username = "";
password = "";
}
}
5. JSP
创建一个JSP页面以显示语言选择,表单值以及错误消息。 “ /Locale.do?method=chinese ”将与DispatchAction chinese()方法匹配。
page="/Locale.do?method=chinese">
page="/Locale.do?method=english">
page="/Locale.do?method=german">
page="/Locale.do?method=france">
6. struts-config.xml
全部放在一起。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_3.dtd">
<struts-config>
<form-beans>
<form-bean
name="userForm"
type="com.mkyong.common.form.UserForm"/>
</form-beans>
<action-mappings>
<action
path="/LoginPage"
type="org.apache.struts.actions.ForwardAction"
parameter="/pages/multi-language.jsp"/>
<action
path="/Submit"
type="com.mkyong.common.action.LanguageSelectAction"
name="userForm"
validate="true"
input="/pages/multi-language.jsp"
>
<forward name="success" path="/pages/multi-language.jsp"/>
</action>
<action
path="/Locale"
type="com.mkyong.common.action.LanguageSelectAction"
name="userForm"
parameter="method"
validate="false"
>
<forward name="success" path="/pages/multi-language.jsp"/>
</action>
</action-mappings>
<message-resources
parameter="com.mkyong.common.properties.Common" />
</struts-config>
7. wel.xml
将Struts框架集成到Web部署描述符文件中。
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Maven Struts Examples</display-name>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>
/WEB-INF/struts-config.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
屏幕截图
http:// localhost:8080 / StrutsExample / LoginPage.do
您可以通过语言链接更改界面。
英文界面
中文界面
法国界面
德语界面
翻译自: https://mkyong.com/struts/struts-internationalizing-or-localization-example/