Получение исключения нулевого указателя при тестировании класса действий xwork

Я пытаюсь запустить xwork самостоятельно, т.е. используя main method(), но, к сожалению, я не выполняю свой класс действия, вместо этого я получаю исключение нулевого указателя, так как мой контейнер xwork внутри defaultActionFactory имеет значение 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>

Я застрял здесь, я много раз искал, но не смог найти ничего полезного. Пожалуйста, дайте мне знать, чего здесь не хватает? помощь будет высоко ценится

нулевой указатель происходит в приведенном ниже коде 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;
   }

1 ответ

Так как я не знаю о тестовой среде, которую вы используете, я могу дать вам представление. В вашем файле класса задайте значения по умолчанию для имен и переменных приветствия и наблюдайте, меняются ли они во время выполнения (или смотрите, какая из них изменяется).

Другие вопросы по тегам