我试图单独运行xwork,即使用main方法(),但不幸的是,我没有让我的操作类执行,相反,我得到了空指针异常,因为我的defaultActionFactory中的xwork容器是空的。下面是我的action类:
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>我被困在这里,我做了很多搜索,但没有找到任何有结果的东西,请让我知道这里缺少什么?如果能帮上忙,我们将不胜感激。
空指针出现在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;
}发布于 2014-04-14 03:26:11
由于我不知道您使用的测试框架,但是,我可以给出一个想法。在您的类文件中,为name和greeting变量提供默认值,并观察它们是否在运行时发生变化(或查看哪个变量发生了变化)。
https://stackoverflow.com/questions/23047272
复制相似问题