0

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

简单表单控制器

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中显示以上两种方式。但最后我没有得到任何东西。上面的代码有什么问题吗。请帮助我

4

2 回答 2

0

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

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

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

干杯。

于 2012-05-09T13:25:59.190 回答
0

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

将“验证器”属性添加到您的控制器:

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

创建实现 org.springframework.validation.Validator 的类并实现两个方法:supports 和 validate:

public class CustomerValidator implements Validator{


   @Override
   public boolean supports(Class clazz) {

   }

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

   }
}

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

查看下面的例子,相信你会发现它很有用:Spring MVC 表单处理示例

于 2012-05-09T13:20:13.380 回答