2012-05-09 2 views
0

Я не могу получить сообщение об ошибке на странице jsp. В общем, я пытаюсь проверить имя пользователя и пароль правильно или нет в базе данных. Я получаю сообщение об ошибке из dao и catch на контроле код нижеКак отображать ошибки в 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()); 
} 

Iam пытается отобразить двумя способами в 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> 

я пытаюсь dispaying над двух способами в jsp.But наконец я не получил какой-либо thing.is там какие-либо вопросы, с выше code.plz помогают мне

ответ

0

Вы пробовали использовать BindingResult.hasError()? И укажите, в каком поле вы хотите отобразить ошибку.

Также убедитесь, что код ошибки, который вы используете, находится в вашем файле proerpty.

Если вы используете ModelAttribute для привязки модели к вашему представлению, то гораздо проще справиться с ошибками в jsp. Если вы захотите, я могу здесь добавить код.

Cheers.

0

подхода, который я использовал для формирования проверки было следующее:

свойство Add «валидатор» к контроллеру:

<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

+0

Iam, проверяя данные с таблицей базы данных, тогда я выбрал исключение. I..e invalida username/apssword. Но если iam использует валидатор, он работает между представлением формы и до того, как попадет в объект объекта. Это правильно? – user1357722

+0

По-моему, вы должны ввести свой dao в свой валидатор и реализовать всю логику внутри своего настраиваемого валидатора. Цитата взята из [link] (http://stackoverflow.com/questions/1045895/should-validators-in-spring-access-the-database): «Ну, ваши валидаторы - это просто весенние бобы, правильно, поэтому их можно вводить с объектами службы, которые обрабатывают доступ к данным. Вы можете заставить ваши валидаторы получать данные из базы данных без ущерба для дизайна ». – MrKiller21