struts2调用动态方法,为什么报错java.lang.NoSuchMethodException

来源:百度知道 编辑:UC知道 时间:2024/05/21 15:05:15
我初学者就是一个form的两个按钮提交到同一个action的不同方法
jsp:
<!-- 使用form标签生成表单元素 -->
<s:form action="Login">
<s:textfield name="username" label="用户名"/>
<s:textfield name="password" label="密码"/>
<s:submit type="button" value="注册" onClick="regist()"></s:submit>
<s:submit value="登录"/>
</s:form>
</body>
<script>
function regist(){
//获取表单元素
var targetForm = document.forms[0];
//动态修改表单action属性
targetForm.action="Login!regist.action";
alert("action");
targetForm.submit();
}
</script>

struts.xml:
<action name="Login" class="com.liuxing.liuxing.action.LoginAction">

<result name="input">/liuxing.jsp </result>
<result

有两种修改的办法:
1、推荐方法:
把struts.xml中
<action name="Login" class="com.liuxing.liuxing.action.LoginAction">
变为:
<action name="Login" class="com.liuxing.liuxing.action.LoginAction" method="regist">

2、把com.liuxing.liuxing.action.LoginAction方法名修改。

把public String regist() throws Exception
修改为
public String execute() throws Exception

原因:
struts2的action是默认执行execute方法的,
如果你配置了method就去执行你配置的方法。
如果没有配置method,而有没找到execute方法就抛异常了~

检查struts2 的常量配置,是否已禁用动态方法的调用。
另外,不建议使用动态方法,在action配置中加入method属性会更好些。