1

这是我的WelcomeAction课:

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文件:

<?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被抛出。

我是 Struts 2 的新手,想了解一下。我正在讨论拦截器并从教程中学习。

4

2 回答 2

1

Struts2 框架利用通过拦截器支持其功能所需的代码。为此,核心包提供了默认配置struts-default.xml可以灵活地扩展和覆盖默认设置。此配置在启动时加载并应用于您使用的每个操作,除非该操作具有自己的自定义设置。如果您想将这些设置用于包配置中的每个操作,那么您应该考虑创建拦截器堆栈。请参阅我们如何配置要与每个 Action 一起使用的拦截器

请查看 Struts 2 文档以获取有关上述拦截器的完整详细信息。

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

你得到了NullPointerException因为你没有params在动作配置中引用拦截器。而且您应该知道,如果您为具体的操作配置引用拦截器,它将使用此拦截器,而不是在defaultStack操作配置未引用拦截器时默认使用的拦截器。

于 2014-04-12T13:00:09.980 回答
0
 <action name="Welcome" class="com.codinghazard.actions.WelcomeAction">

    <interceptor-ref name="timer" />
    <interceptor-ref name="defaultStack"/>
        <result name="SUCCESS">pages/Result.jsp</result>
        <result name="ERROR">pages/error.jsp</result>

    </action>

试试上面。

每当您使用任何在 struts2 的默认拦截器列表中不可用的额外拦截器时,您必须明确添加默认堆栈以利用默认拦截器的功能作为参数或工作流。

于 2014-10-11T10:57:07.320 回答