Struts 2国际化在Intellij IDEA中不起作用

时间:2018-11-18 11:28:00

标签: java-ee internationalization struts

我正在学习Struts 2国际化和语言环境。

页面在浏览器中始终显示login.userlogin.passwordlogin.submit

我要显示的文本是英语或简体中文,例如UserPasswordLogin,而不是login.user等。

index.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>Internationalization</title>
    </head>
    <body>
    <%--user select language page--%>
        <s:url var="loginCN" action="changeLocale" namespace="/">
            <s:param name="language">cn</s:param>
        </s:url>
        <s:url var="loginEN" action="changeLocale" namespace="/">
            <s:param name="language">en</s:param>
        </s:url>
        <a href="<s:property value="#loginCN" />">简体中文</a>
        <a href="<s:property value="#loginEN" /> ">English</a>

    <%--input form data--%>
        <form action="login" method="post">
            <s:text name="login.user" />
            <input type="text" name="username"/><br/>
            <s:text name="login.password" />
            <input type="text" name="password" /><br/>
            <input type="submit" value="<s:text name="login.submit" />" />
            <!--output validation information-->
            <p><s:fielderror fieldName="username" /></p>
        </form>


    </body>
</html>

struts.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>
    <constant name="struts.custom.i18n.resources" value="viewResources.global" />

    <package name="default" namespace="/" extends="struts-default">

        <action name="changeLocale" class="web.struts.action.ChangeLocaleAction">
            <result name="success">/index.jsp</result>
        </action>
    </package>
</struts>

global.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <entry key="global.success">Success</entry>
    <entry key="login.password">Password</entry>
    <entry key="login.submit">Login</entry>
    <entry key="login.user">User</entry>
</properties>

global_en_US.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <entry key="global.success">Success</entry>
    <entry key="login.password">Password</entry>
    <entry key="login.submit">Login</entry>
    <entry key="login.user">User</entry>
</properties>

global_zh_CN.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <entry key="global.success">成功</entry>
    <entry key="login.password">密码</entry>
    <entry key="login.submit">登录</entry>
    <entry key="login.user">用户</entry>
</properties>

Project Structure

Run Result

1 个答案:

答案 0 :(得分:0)

好的,我已经解决了问题。

首先,该错误取决于“ global.xml”,“ global_zh_CN.xml”和“ global_en_US.xml”文件。

第二,资源束文件的位置错误。

我使用全球国际化资源,相关文件(xxx.properties)应该放在src中,例如src / xxx.properties。

最重要的是“ .xml”。在IntelliJ IDEA中创建资源包时,我们不应选中“使用基于XML的属性文件”复选框。这是解决问题的关键。