我正在尝试单独运行xwork,即使用main方法()但不幸的是我没有执行我的动作类,而是因为我在defaultActionFactory中的xwork容器为null而得到空指针异常。这是我的动作类:
import com.opensymphony.xwork2.Action;
public class HelloWorld implements Action {
String name;
String greeting;
public void setName(String name) {
this.name = name;
}
public String getGreeting() {
return greeting;
}
public String execute() {
greeting = "Hello, " + name;
return SUCCESS;
}
}
我测试此操作的主要课程如下:
public class Main {
public static void main(String[] args) throws Exception {
Map params = new HashMap();
params.put("name", "Patrick");
Map extraContext = new HashMap();
extraContext.put(ActionContext.PARAMETERS, params);
ActionProxyFactory factory = new DefaultActionProxyFactory();
ActionProxy proxy =
factory.createActionProxy("", "hello", extraContext);
System.out.println(proxy.execute());
HelloWorld hello = (HelloWorld) proxy.getAction();
System.out.println(hello.getGreeting());
}
}
最后,我将xwork.xml放在同一个包文件夹中,下面是我的xwork.xml文件
<!DOCTYPE xwork PUBLIC “-//OpenSymphony Group//XWork 1.0//EN"
"http://www.opensymphony.com/xwork/xwork-1.0.dtd">
<xwork>
<package name="default">
<action name="hello"
class="org.arpit.javapostsForLearning.HelloWorld">
</action>
</package>
</xwork>
我被困在这里,我做了很多搜索,但找不到任何有益的东西,请告诉我这里缺少什么?非常感谢帮助
null指针发生在DefaultActionProxyFactory的下面代码中,但我发送的是我的主类中的所有内容,它表示容器为空
public ActionProxy createActionProxy(ActionInvocation inv, String namespace, String actionName, String methodName, boolean executeResult, boolean cleanupContext)
{
DefaultActionProxy proxy = new DefaultActionProxy(inv, namespace, actionName, methodName, executeResult, cleanupContext);
this.container.inject(proxy);
proxy.prepare();
return proxy;
}
答案 0 :(得分:0)
因为我不知道你使用的测试框架,所以我可以提出一个想法。 在类文件中,为name和greeting变量提供默认值,并观察它们是否在运行时更改(或查看哪个更改)。