有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有一个package.properties文件,其中包含

email.domain=localhost:8080

现在,从同一个包中的一个类调用getText("email.domain"),但得到以下错误:

stacktrace:

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)

如何解决这个问题呢


共 (3) 个答案

  1. # 1 楼答案

    下面一个是从Maven repository创建的典型Struts2项目

    enter image description here

    我所有的动作类都将在com上提供。xxx。控制器软件包

    要使getText(“xxxxxx”)方法工作,需要进行以下配置

    1. 您的操作应该直接或间接地扩展ActionSupport
    2. 还有struts。xml你应该把struts.propertiesXXXXX.properties文件放在你放置struts的地方。xml
    3. struts中的配置。房地产是

    struts.custom.i18n.resources=<file name of additonal properties file name without extension> Example : struts.custom.i18n.resources=package.properties;

    1. 这些配置需要在struts中完成。xml是:

    <constant name="struts.custon.i18n.resources" value="XXXXX" />

    Example = <constant name="struts.custon.i18n.resources" value="package" />

    检查您在项目中正确配置的所有这些配置

  2. # 2 楼答案

    您只能在映射到当前线程中执行的请求的操作的上下文中调用getText

    如果要加载属性,可以使用Properties类和方法load()

  3. # 3 楼答案

    ActionSupport.getText()最终打电话给ActionContext.getContext().getValueStack()。你的空指针是因为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();