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()

初学者,请高手指教
展开
 我来答
嘟爷他巴
2009-11-06 · TA获得超过267个赞
知道小有建树答主
回答量:119
采纳率:0%
帮助的人:177万
展开全部
检查struts2 的常量配置,是否已禁用动态方法的调用。
另外,不建议使用动态方法,在action配置中加入method属性会更好些。
ykzhen
2009-11-16 · TA获得超过5298个赞
知道大有可为答主
回答量:1303
采纳率:0%
帮助的人:1168万
展开全部
有两种修改的办法:
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条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式