Struts 2 中的 getText() 方法抛出 NullPointerException

问题描述 投票:0回答:3

我有一个

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)

如何解决这里的问题?

java properties nullpointerexception struts2 localization
3个回答
0
投票

您可以在映射到当前线程中正在执行的请求的操作上下文中调用

getText
only

如果你想加载属性,你可以使用

Properties
类和方法
load()


0
投票

下面是一个从 Maven 存储库创建的典型 Struts2 项目。

enter image description here

我的所有 Action 类都将在 com.xxx.controller 包中提供。

为了使 getText("xxxxxx") 方法正常工作,需要完成以下配置。

  1. 你的行为应该直接或间接扩展
    ActionSupport
  2. 与 struts.xml 一起,您应该将
    struts.properties
    XXXXX.properties
    文件放置在放置 struts.xml 的位置
  3. struts.properties中的配置是

struts.custom.i18n.resources= 示例:struts.custom.i18n.resources=package.properties;

  1. struts.xml中需要完成的配置为:

示例 =

检查项目中是否正确配置了所有这些配置。


0
投票

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();
© www.soinside.com 2019 - 2024. All rights reserved.