getText显示属性名称而不是值

时间:2012-01-19 13:21:04

标签: jsp struts2

在过去一周左右的时间里,我开始学习Struts 2,并且使用TextProvider界面对一个例子感到困惑。我有一个简单的类(TextExampleAction.java),只返回SUCCESS字符串。以下是动作类的来源:

package com.packt.s2wad.ch03.i18n;

import org.apache.log4j.Logger;

import com.opensymphony.xwork2.ActionSupport;

public class TextExampleAction extends ActionSupport implements TextInterface {
    private static Logger log = Logger.getLogger(TextExampleAction.class);
    public String execute() throws Exception {
        log.debug(getText("from.class.props"));
        return SUCCESS;
    }
}

这是JSP文件的源代码(text-example.jsp):

<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<body>
   <dl>
       <dt>From TextExampleAction.properties via property tag, using getText(...)</dt>
       <dd><s:property value="getText('from.class.props')"/></dd>
   </dl>
</body>
</html>

我的属性文件的命名与我的Java类(TextExampleAction.properties)相同,并且位于同一个包中。以下是该文件的内容:

  

from.class.props =来自TextExample.properties的Hello!

当我查看页面时,显示的内容如下:

  

从TextExampleAction.properties通过property标签,使用getText(...)              from.class.props

所以我只想弄清楚为什么它为该属性返回一个空值...

编辑:

here is the output of the debug tag

1 个答案:

答案 0 :(得分:0)

我无法在Struts 2.3.1下重现此问题。

  • 确保属性和类文件名为TextExampleAction(具有正确的扩展名)。
  • 确保属性文件与war文件本身完全相同的包层次结构。

例如,这是我的Maven输出:

s231_01_war_exploded
        |-- index.jsp
        `-- WEB-INF
            |-- classes
            |   |-- actions
            |   |   |-- TextExampleAction.class
            |   |   `-- TextExampleAction.properties
            |   |-- log4j.properties
            |   `-- struts.xml
            |-- jsp
            |   `-- test.jsp
            |-- lib
            |   `-- (all the libs)
            `-- web.xml

这可以按预期工作。


查看项目后编辑

您的S2配置文件struts.xml尚未部署。

此外,由于它在repo中,您没有通过自己的操作运行任何请求,只有默认的S2转发操作 - 您不会获取任何打包的I18N文件,因为它们不存在在默认操作的包中。

我真的建议不要通过Ant执行此操作,但是按照书中的建议使用Maven,尽管在这种情况下,唯一缺少的是struts.xml文件。当您的build.xml当前有效时,请将struts.xml放在源目录的根目录下。