在 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.xml
with 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.
相关文章