在 Struts 2 中使用拦截器时出现 NullPointerException [英] NullPointerException when using an interceptor in Struts 2

查看:26
本文介绍了在 Struts 2 中使用拦截器时出现 NullPointerException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的 WelcomeAction 类:

This is my WelcomeAction class:

package com.codinghazard.actions;

public class WelcomeAction {
    
    private String operandA;
    private String operandB;
    private Character operator; 
    private int sum;
    
    
    public String execute() {
        if ((operandA!="") && (operandB!=""))
        {
            int a=Integer.parseInt(operandA);
            int b=Integer.parseInt(operandB);
            switch (operator) 
            {
            case '1':
                sum=a+b;
                break;
            case '2':
                sum=a-b;
                break; 
            case '3':
                sum=a*b;
                break;
            case '4':
                try
                {
                    sum=a/b;
                }
                catch(ArithmeticException ae)
                {
                    return "ERROR";
                }
                break;                  

            }
            return "SUCCESS";
        }
        return "ERROR";
    }


    public String getOperandA() {
        return operandA;
    }


    public void setOperandA(String operandA) {
        this.operandA = operandA;
    }


    public String getOperandB() {
        return operandB;
    }


    public void setOperandB(String operandB) {
        this.operandB = operandB;
    }


    public Character getOperator() {
        return operator;
    }


    public void setOperator(Character operator) {
        this.operator = operator;
    }


    public int getSum() {
        return sum;
    }


    public void setSum(int sum) {
        this.sum = sum;
    }
}

这是我的 struts.xml 文件:

This is my struts.xml file:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
 
<struts>
 <!-- http://localhost:8080/test/user/login -->
    <package name="user" namespace="/user" extends="struts-default">
        <action name="calculator">
        <interceptor-ref name="timer" />
            <result>pages/Calculator.jsp</result>
        </action>
        <action name="Welcome" class="com.codinghazard.actions.WelcomeAction">
        <%--
        <interceptor-ref name="timer" />
        --%>
            <result name="SUCCESS">pages/Result.jsp</result>
            <result name="ERROR">pages/error.jsp</result>
            
        </action>
        
    </package>
 
</struts>

我试图使用一个拦截器,但是当我取消注释它时 NullPointerException 被抛出.

I tried to user an interceptor but when I uncomment it NullPointerException is thrown.

我是 Struts 2 的新手,并试图理解.我的主题是拦截器,并从 this 教程中学习.

I am new to Struts 2 and trying to get an understanding. I am on the topic of interceptors and learning from this tutorial.

推荐答案

Struts2 框架通过 拦截器.为此,核心包在struts-default.xml具有扩展和覆盖默认设置的灵活性.此配置在启动时加载并应用于您使用的每个操作,除非该操作具有自己的自定义设置.如果您想将这些设置用于包配置中的每个操作,那么您应该考虑创建拦截器堆栈.请参阅 我们如何配置要使用的拦截器每次操作.

The Struts2 framework leverages the code required to support its features via interceptors. For this purpose the core package provides the default configuration in the struts-default.xmlwith the flexibility to extend and override the default settings. This configuration is loaded on startup and applies to every action you use unless the action has its own custom settings. If you want to use these settings to every action in your packages configuration then you should consider creating the interceptor stack. See How do we configure an Interceptor to be used with every Action.

请查看 Struts 2 文档以获取上述完整详细信息提到了拦截器.

Please look into Struts 2 documentation for complete detail on above mentioned interceptors.

这是来自教程链接的非常有用的建议.然而,本教程本身是为中高级读者准备的.初学者应该从入门开始.

This is very useful suggestion from the link of the tutorial. However the tutorial itself intended for middle or advanced readers. The beginners should start from Getting Started.

你得到 NullPointerException 因为你没有在动作配置中引用 params 拦截器.而且你应该知道,如果你为具体的动作配置引用一个拦截器,它将使用这个拦截器,而不是 defaultStack,如果动作配置没有引用拦截器,则默认使用该拦截器.

You got NullPointerException because you didn't reference params interceptor in the action configuration. And you should know that if you reference an interceptor for a concrete action config, it will use this interceptor and not the defaultStack which is used by default if no interceptor is referenced by the action configuration.

这篇关于在 Struts 2 中使用拦截器时出现 NullPointerException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆