Проверка клиента Spring 3.0 MVC - PullRequest
1 голос
/ 06 апреля 2010

Я хочу знать, каков наилучший способ проверки представления html-формы в Spring 3.0.Проверки - это простые обязательные проверки, не очень ориентированные на бизнес.В настоящее время я использую spring-modules-validator + commons-validator, но это Maven Dep.это с весны 2.0, а не 3.0.Я не использую аннотации.

Ответы [ 2 ]

2 голосов
/ 28 августа 2010

Весной 3 лучший путь - это для использования аннотаций, если вы можете переключиться. Интеграция с API проверки бинов позволяет легко добавить проверку. Все, что вам нужно сделать для проверки бина формы, это добавить аннотацию @Valid (см. «5.7.4.1 Запуск проверки входных данных @Controller» в главе «Документация Spring MVC» 5. Проверка, привязка данных и преобразование типов) к аргумент метода контроллера. Затем Spring проверит bean-компонент и поместит ошибки проверки в BindingResult для вас.

@Controller
public class RegisterFormController {
  ...
  @RequestMapping(value = "/register", method = RequestMethod.POST)
  public String submitFormHandler(@ModelAttribute("registration") @Valid User user, BindingResult errors) {
    if (errors.hasErrors()) {
      // send user back to form view
    } else {
      // handle form submission
    }
  }
  ...
}

В документах говорится, что Spring автоматически настроит фабрики и валидаторы проверки компонентов, но если это не сработает, вы можете легко настроить их вручную:

  <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="webBindingInitializer">
      <!-- Configures Spring MVC DataBinder instances -->
      <bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
      <property name="validator" ref="validator" />
      </bean>
    </property>
  </bean>

  <!-- Creates the JSR-303 Validator -->
  <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />

Я также создал проект, основанный на реализации проверки «valang» на стороне клиента из модуля Spring валидации, который может обеспечить проверку на стороне клиента в JavaScript на основе аннотаций проверки JSR-303 и Hibernate Validator.

http://kenai.com/projects/jsr303js

Проект предоставляет файл taglib / JavaScript, который вы включаете для помещения основного кода JavaScript на страницу, а затем еще один тег, который вы помещаете где-то в свой тег Spring <form:form></form:form> для запуска проверки.

<%@ taglib prefix="jsr303js" uri="http://kenai.com/projects/jsr303js/" %>
  ...
  <head>
    ...
    <script type="text/javascript" src="<c:url value="/js/jsr303js-codebase.js"/>"></script>
    ...
  </head>
  <body>
    ...
    <form:form name="regForm" commandName="registration" method="post">
      ...
      <jsr303js:validate commandName="registration"/>
      ...
      </form:form>
2 голосов
/ 22 апреля 2010

Вы упомянули, что в настоящее время вы не используете аннотации. Если вы открыты для их использования, я рекомендую новый API проверки бинов (JSR 303). Hibernate предоставляет реализацию , а Spring 3.0 поддерживает ее. Аннотации, представленные в javax.validation, охватывают большинство основных проверок одного поля, и вы можете применять их к любому POJO (не только к бинам или экземплярам модели).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...