我有一个
package.properties
文件,其中包含
email.domain=localhost:8080
现在,我从同一个包内的类中调用
getText("email.domain")
:
System.out.println("http://" + getText("email.domain") + "/ReportContent.action");
但出现此错误:
java.lang.NullPointerException
at com.opensymphony.xwork2.util.LocalizedTextUtil.findText(LocalizedTextUtil.java:361)
at com.opensymphony.xwork2.TextProviderSupport.getText(TextProviderSupport.java:208)
at com.opensymphony.xwork2.TextProviderSupport.getText(TextProviderSupport.java:123)
at com.opensymphony.xwork2.ActionSupport.getText(ActionSupport.java:103)
如何解决这里的问题?
您可以在映射到当前线程中正在执行的请求的操作上下文中调用
getText
only。
如果你想加载属性,你可以使用
Properties
类和方法 load()
。
下面是一个从 Maven 存储库创建的典型 Struts2 项目。
我的所有 Action 类都将在 com.xxx.controller 包中提供。
为了使 getText("xxxxxx") 方法正常工作,需要完成以下配置。
ActionSupport
类struts.properties
和 XXXXX.properties
文件放置在放置 struts.xml 的位置 struts.custom.i18n.resources=
示例:struts.custom.i18n.resources=package.properties;
示例 =
检查项目中是否正确配置了所有这些配置。
ActionSupport.getText()
最终拨打了ActionContext.getContext().getValueStack()
。 你的 NullPointer 是因为 ActionContext.getContext()
为空。 当您自己创建 ActionSupport 对象时,可能会发生这种情况……也许可以通过执行类似 ActionSupport myActionSupportObj = new ActionSupport()
的操作; 假设 struts2 设置的其余部分已完成,获取有效 ActionSupport 对象的适当方法是重写 AbstractInterceptor 类
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionSupport;
public class MyInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation invocation) throws Exception {
ActionSupport actionInstance = (ActionSupport) invocation.getAction();