如何使用spring mvc在jsp中显示错误

时间:2012-05-09 12:32:53

标签: spring-mvc

我无法在jsp页面中收到错误消息。实际上,我试图在数据库中检查用户名和密码是否正确.Iam从dao抛出dataexception并在控制器上捕获检查以下代码

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中以上两种方式进行调度。但最后我没有得到任何东西。上面有任何问题代码.plz帮帮我

2 个答案:

答案 0 :(得分:0)

我用来形成验证的方法如下:

将“validator”属性添加到控制器:

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

创建实现org.springframework.validation.Validator的类并实现两个方法:支持和验证:

public class CustomerValidator implements Validator{


   @Override
   public boolean supports(Class clazz) {

   }

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

   }
}

我会从控制器类的主体中删除验证逻辑。

请查看以下示例,我相信您会发现它很有用:Spring MVC form handling example

答案 1 :(得分:0)

您是否尝试过使用BindingResult.hasError()? 并指定要在哪个字段中显示错误。

还要确保您的错误代码存在于您的proerpty文件中。

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

干杯。