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 で使用される Interceptor をどのように設定するかを参照してください。

上記のインターセプターの詳細については、Struts 2 のドキュメントを参照してください。

これは、チュートリアルのリンクからの非常に役立つ提案です。ただし、チュートリアル自体は中級者または上級者向けです。初心者はGetting Startedから始めてください。

アクション構成でインターセプターを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 に答える