日期:2014-05-17  浏览次数:20729 次

struts2.3 动态方法调用报错的问题
struts.xml:

<struts>
    <package name="default" extends="struts-default">
    <action name="login" class="com.wjf.action.LoginAction"> 
<result name="success">/showmsg.jsp</result>
</action>
</package>
</struts>


LoginAction.java

public class LoginAction implements Action{

private String msg;

public String getMsg() {
return msg;
}

public String execute() throws Exception {
msg = "execute";
return SUCCESS;
}

public String addUI(){
msg = "addUI";
return SUCCESS;
}
}


地址栏访问http://192.168.1.102:8080/struts2/login!addUI.action,为什么报错?


java.lang.NullPointerException
org.apache.struts2.impl.StrutsActionProxy.getErrorMessage(StrutsActionProxy.java:69)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:553)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:434)



------解决方案--------------------
一旦你使覆盖了execute方法,其他的方法是不会调用的,不要覆盖这个方法,自己定义方法,这样就可以使用http://192.168.1.102:8080/struts2/login!xxxxx.action调用action中指定的方法。