我正在尝试单独运行xwork,即使用main method(),但不幸的是我没有执行我的动作类,而是因为我在defaultActionFactory 中的xwork 容器为空,所以我得到了空指针异常。这是我的动作课:
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;
}