struts2调用动态方法,为什么报错java.lang.NoSuchMethodException
我初学者就是一个form的两个按钮提交到同一个action的不同方法jsp:<!--使用form标签生成表单元素--><s:formaction="Login"><s:t...
我初学者就是一个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 name="error">/error.jsp </result>
<result name="success">/success.jsp </result>
</action>
action:
public String regist() throws Exception{
ActionContext.getContext().getSession().put("user",getUsername());
ActionContext ctx = ActionContext.getContext();
ctx.put("tip","您已注册成功");
System.out.println("regist");
return SUCCESS;
}
在我action中明明有这个方法但是他提交的时候要报错
java.lang.NoSuchMethodException: com.liuxing.liuxing.action.LoginAction.regist()
初学者,请高手指教 展开
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 name="error">/error.jsp </result>
<result name="success">/success.jsp </result>
</action>
action:
public String regist() throws Exception{
ActionContext.getContext().getSession().put("user",getUsername());
ActionContext ctx = ActionContext.getContext();
ctx.put("tip","您已注册成功");
System.out.println("regist");
return SUCCESS;
}
在我action中明明有这个方法但是他提交的时候要报错
java.lang.NoSuchMethodException: com.liuxing.liuxing.action.LoginAction.regist()
初学者,请高手指教 展开
展开全部
有两种修改的办法:
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方法就抛异常了~
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方法就抛异常了~
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询