错误异常:
javax.servlet.ServletException: No adapter for handler [public boolean com.fuying.assure.user.login.action.UserManageAction.validIdNoExist(org.springframework.ui.Model,java.lang.String)]: Does your handler implement a supported interface like Controller?
at org.springframework.web.servlet.DispatcherServlet.getHandlerAdapter(DispatcherServlet.java:1077)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:870)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:874)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:790)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:617)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1760)
at java.lang.Thread.run(Thread.java:662)
controller()方法:
@RequestMapping(value="/validIdNoExist", method = RequestMethod.POST)
public boolean validIdNoExist(Model model,
@RequestParam(value="IdNo")String IdNo){
Connection conn = ConnectionDao.getByDataSourceConnection();
boolean result = this.userInfoService.validIdNoExist(IdNo, conn);
if(result){
return true;
}
return false;
}
js中的ajax()请求:
$.ajax({
type:"post",
cache:false,
dataType:"json",
async:true,
url:ctx+"/usrDefine/validIdNoExist.do",
data:{"IdNo":IdNo},
success:function(json){
if(json){
alert("身份证号已经存在,请重新输入!");
$("#userForm input[name='idNo']").val("");
}else{
}
},
error:function(){
alert("身份证号验证出错,请联系管理员!");
}
});
原因:dataType : "json",所以要求 controller() 方法返回值必须是json类型, 而以上 controller() 方法返回 boolean 类型 ,并非转化为 json 数据格式返回,所以报以上异常。
改正方法 :
@RequestMapping(value="/validIdNoExist", method = RequestMethod.POST)
@ResponseBody
public boolean validIdNoExist(Model model,
@RequestParam(value="IdNo")String IdNo){
Connection conn = ConnectionDao.getByDataSourceConnection();
boolean result = this.userInfoService.validIdNoExist(IdNo, conn);
if(result){
return true;
}
return false;
}
即可。