Доступ к объектам модели из представления в Spring 2.5 - PullRequest
0 голосов
/ 26 октября 2010

Есть ли способ доступа к объектам в модели, установленной контроллером в представлении весной 2.5? Я использую SimpleFormController, но вместо использования правильного Validator, я выполняю проверки непосредственно в методе onSubmit (), потому что я работаю с jQuery на стороне клиента, и мне не нужен весь ViewForm (полная страница) в случае ошибок (в этом случае я возвращаю блок HTML с некоторыми строками ошибок).

Поэтому я создаю свою собственную карту в onSubmit (), но мне не удается прочитать ее со страницы JSP. Есть ли чистый способ сделать это в Spring 2.5?

Это первая версия моего контроллера:

protected ModelAndView onSubmit( Object command,
                                 BindException errors ) throws Exception {

  User user = ( User )command;

  // This is a common validator that I wanted to remain untouched.
  validator.validate( user, errors );

  // In this way I wanted to try to have both errors and the model in the view.
  return new ModelAndView( getSuccessView(), "model", errors.getModel() );
}

Поскольку я не мог получить доступ к списку ошибок из моего jsp, я попытался изменить контроллер с помощью класса (KeepInformedPageData), который повторно отображает модель и ошибку в новой карте, к которой я знаю, как получить доступ:

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

  KeepInformedPageData pageData = new KeepInformedPageData( messageSource, request.getLocale() );
  User user = ( User )command;

  // This is a common validator that I wanted to remain untouched.
  validator.validate( user, errors );

  // As I couldn't access the model provided by errors.getModel(), I tried to 
  // build up my own model but unfortunately with the same result.
  pageData.addErrors( errors );
  pageData.addCommandModel( errors.getModel() );

  return new ModelAndView( getSuccessView(), "model", pageData.getRebuiltModel() );
}

Я пробовал все возможные комбинации на стороне jsp, но безрезультатно, вот некоторые из попыток:

<br />
${model.command.email}
<br />
${model.errors.defaultMessage}
<br />
<form:form name="command" action="index.htm" method="POST">
  <form:errors path="model.invalid.email" />
  <div>Email <input type="text" name="email" value="Your email address"></div>
  <div><input type="submit" value="Submit" /></div>
</form:form>

Итак, последний вопрос: как мне получить доступ к Карте, полученной от контроллера?

Ответы [ 2 ]

0 голосов
/ 27 октября 2010

Хорошо, может быть, это было слишком просто, чтобы даже считать проблему: пытаясь работать с объектом «ошибки», полученным в качестве параметра в моем контроллере, я понял, что существует метод «getModel ()» и от такогоСвойство Я пытался получить все подпроцессы, поступающие из команды, и это была ошибка, которая подтолкнула меня в неправильном направлении.

Теперь я просто передаю объект «ошибки» из контроллера:

return new ModelAndView( getSuccessView(), "dataBlock", errors );

И я использую свойства объекта «ошибки» на странице JSP:

<div>${resultBlock.fieldError.defaultMessage}</div>
0 голосов
/ 27 октября 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...