Есть ли способ доступа к объектам в модели, установленной контроллером в представлении весной 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>
Итак, последний вопрос: как мне получить доступ к Карте, полученной от контроллера?