struts2中java.lang.NoSuchMethod的问题

做了一个SSH2整合的项目报错如下java.lang.NoSuchMethodException:action.UserAction.login()java.lang.C... 做了一个SSH2整合的项目报错如下
java.lang.NoSuchMethodException: action.UserAction.login()
java.lang.Class.getMethod(Class.java:1605)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.getActionMethod(AnnotationValidationInterceptor.java:75)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:47)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)

applicationContext.xml用的自动加载bean
<!-- 自动扫描配置Bean -->
<context:component-scan base-package="/" />
<!-- 允许基于注解(Annotation-based)的配置 -->
<context:annotation-config />

struts2的配置文件如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 可以自定义action的扩展名默认为".action"以下配置为可以使用多种扩展名 -->
<constant name="struts.action.extension" value="action,do" />

<!-- Make the Spring object factory the automatic default -->
<constant name="struts.objectFactory" value="spring" />
<constant name="struts.objectFactory.spring.autoWire" value="name" />

<package name="default" extends="struts-default">
<action name="userAction_*" class="userAction" method="{1}">
<result name="loginuccess">/main.jsp</result>
<result name="loginfail">/fail.jsp</result>
</action>
<action name="userActionlogin" class="userAction" method="isLogin">
<result name="loginuccess">/main.jsp</result>
<result name="loginfail">/fail.jsp</result>
</action>
</package>
</struts>
Action文件如下

package action;

import javax.annotation.Resource;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import service.impl.ServiceImpl;

@Controller
@Scope("prototype")
public class UserAction {
@Resource private ServiceImpl serviceImpl;
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

public String isLogin(String username, String password){
if(serviceImpl.isLogin(username, password)){
return "loginsuccess";
}
return "loginfail";
}
public String execute(){
return "loginfail";
}
}
于是就出现了很奇怪的现象,如果我的action命名为userAction就能够找到execute方法。但是如果采用通配符设置将action命名为userAction_isLogin的话,就找不到isLogin的方法。求各位高手帮忙啊!!!!!
错了,因为我刚才要试一试换个名字好不好使,其实是java.lang.NoSuchMethodException: action.UserAction.isLogin()。像代码大小写啊,是不是public了什么的小错误我都找了,但是还是找不到错误,最关键的是execute方法就好使,isLogin方法就不好使了……………………
展开
 我来答
见所某某
推荐于2018-04-05
知道答主
回答量:28
采纳率:0%
帮助的人:23.9万
展开全部
看好了。
在struts2中。你的isLogin得和execute有相同的格式。

也就是说。你的isLogin方法不能带参。

你就能调用了。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xidianheyanjun
2011-12-01 · TA获得超过296个赞
知道小有建树答主
回答量:598
采纳率:0%
帮助的人:397万
展开全部
你好。
你试试把
{1}
改为
{0}
看看行不行。
另外,class对应的类名应该是UserAction吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友40d541e
2011-12-01 · TA获得超过146个赞
知道小有建树答主
回答量:328
采纳率:0%
帮助的人:113万
展开全部
谁一看这么多的代码都晕了。。。
我觉得你是不是可以先看看方法大小写的问题!这个是关键~我经常犯这种错误
其次,我建议你不要用通配符,通配符虽然挺好用的,但是代码分析上效果不是很理想!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
haojiu3211
2011-12-01 · TA获得超过116个赞
知道答主
回答量:170
采纳率:0%
帮助的人:77.1万
展开全部
public class UserAction {
<action name="userAction_*" class="userAction" method="{1}">
类名和配置文件的名字要一样的,有没一起配置呢?
追问
我在applicationContext里面设置了

这样只要采用Action的首字母小写就可以了。从错误看应该是可以找到这个Action但是找不到Method吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c51bacc7d
2011-12-01 · 超过35用户采纳过TA的回答
知道答主
回答量:184
采纳率:0%
帮助的人:113万
展开全部
报错明明写的 找不到UserAction.login()
它也没去找isLogin()方法呀 你请求写错了吧
追问
错了,因为我刚才要试一试换个名字好不好使,其实是java.lang.NoSuchMethodException: action.UserAction.isLogin()。像代码大小写啊,是不是public了什么的小错误我都找了,但是还是找不到错误,最关键的是execute方法就好使,isLogin方法就不好使了……………………
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式