我们已经指定了资源文件的包路径,如下图所示:
并且将globalMessages_en.properties和globalMessages_zh.properties,存放在指定的包路径下。但是运行项目时并没有起到作用呀,在中文环境下并没有获取到中文的数据。
感觉属性文件不能放在某个包下面吧,因为构建项目的时候,根本就没有编译输出属性文件到目录classes下面呀。。
项目结构:
LoginAction:
package priv.lwx.struts2.i18n.web;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
@Override
public String execute() {
// 方法getText()继承自父类ActionSupport,用来解析资源文件,获取指定key所对应的值
String str = getText("firstname");
System.out.println(str);
return "success";
}
}
struts.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 是否启用开发模式 -->
<constant name="struts.devMode" value="true"/>
<constant name="struts.custom.i18n.resources" value="priv.lwx.struts2.i18n.web.globalMessages"/>
<constant name="struts.i18n.encoding" value="UTF-8" />
<package name="struts2-tag" extends="struts-default" namespace="">
<!-- http://localhost:8080/si/login.action -->
<action name="login" class="priv.lwx.struts2.i18n.web.LoginAction">
<result name="success">
/login.jsp
</result>
</action>
</package>
</struts>
中文的资源文件内容:
firstname=firstname
lastname=lastname
age=age
英文的资源文件内容:
firstname=姓
lastname=名字
age=年龄
login.jsp:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<s:form action="login" method="post">
<s:textfield name="firstname" label="%{getText('firstname')}"/>
<s:textfield name="lastname" label="%{getText('lastname')}"/>
<s:textfield name="age" label="%{getText('age')}"/>
<s:submit/>
</s:form>
</body>
</html>