在过去一周左右的时间里,我开始学习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
所以我只想弄清楚为什么它为该属性返回一个空值...
编辑:
答案 0 :(得分:0)
我无法在Struts 2.3.1下重现此问题。
TextExampleAction
(具有正确的扩展名)。例如,这是我的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
放在源目录的根目录下。