2012-05-09 28 views
0

我无法在JSP page.Actually到了错误信息,我想检查用户名和密码是正确的或者不database.Iam在控制器检查抛出dataexception DAO和捕捉显示在jsp中的错误下面的代码如何使用Spring MVC的

SimpleFormController

public ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response,Object command,BindException errors) throws Exception { 

     log.info("onSubmit handleRequest method"+request.getParameter("username")); 
     boolean isError=false; 
     String username="",password="",errMessage=""; 
     username=request.getParameter("username"); 
     password=request.getParameter("password"); 

     UserBean ubean=null; 
     try{ 
      ubean=userservice.chkUsername(username,password); 
     }catch(DataException ex){ 

      errMessage=ex.getMessage(); 
      isError=true; 
      //throw ex; 
     } 
     if(isError==true){ 
      System.out.println("errMessage handleRequest method"+errMessage); 
      errors.reject(errMessage); 
      return showForm(request, response, errors); 
     } 
     log.info("After shownform method called"); 
     HttpSession session=request.getSession(true); 
     session.setAttribute("User",ubean); 
     return new ModelAndView("UserPage"); 
     } 



public ModelAndView showForm(HttpServletRequest request, HttpServletResponse response,BindException errors) throws Exception { 
       //Displaying Count size 
    log.info("Show form Error Count"+errors.getErrorCount()+getFormView()); 
    return new ModelAndView(getFormView()); 
} 

荫试图在jsp页面即两种方式,

JSP页面来显示: -

1) 
       <spring:hasBindErrors name="UserBean"> 
        <h3>You have errors in your input!</h3> 
    <font color="red"> 
        <c:forEach items="${errors.allErrors}" var="error"> 
    <spring:message code="${error.code}" text="${error.defaultMessage}"/> 
    </c:forEach> 
    </font> 
        </spring:hasBindErrors> 
2) <form:form action="userpage.htm" method="post" onsubmit="javascript:fun()"> 
        <tr> 
        <form:errors path="*"/> 
         -------- 
         -------- 
    </form:form> 

我试图在上面jsp.But两种方式最后我没跟任何上述问题有任何thing.is有code.plz帮我

回答

0

你有()试图用BindingResult.hasError? 并指定您想要显示错误的字段。

还要确保您使用的错误代码是有你的proerpty文件。

如果您使用ModelAttribute将模型绑定到视图,那么它更容易处理jsp中的错误。如果你想,那么我可以在这里放一些代码。

干杯。

0

的方法dispaying我用表单验证在以下:

增加“验证”属性到控制器:

<bean class="YourController"> 
    ... 
    <!-- Map a validator --> 
    <property name="validator"> 
     <bean class="CustomerValidator" /> 
    </property> 
    ... 
</bean> 

创建类实现org.springframework.validation.Validator和实现两个方法:SUP端口和验证:

public class CustomerValidator implements Validator{ 


    @Override 
    public boolean supports(Class clazz) { 

    } 

    @Override 
    public void validate(Object target, Errors errors) { 

    } 
} 

我会消除从您的控制器类的身体验证逻辑。

检查下面的例子中,我相信你会发现它有用:Spring MVC form handling example

+0

Iam使用数据库表检查数据然后我抛出异常i..e invalida username/apssword.But如果iam使用验证程序,它在表单提交和数据库命中object.is之间工作是正确的? – user1357722

+0

在我看来,你应该注入你的DAO到您的验证和实现自定义验证里面所有的逻辑。引用来自[链接](http://stackoverflow.com/questions/1045895/should-validators-in-spring-access-the-database):“那么你的验证器只是春豆,是的,所以他们可以注入与处理数据访问的服务对象相关联,您可以让验证器从数据库中获取数据,而不会影响设计。“ – MrKiller21