有没有办法在Spring 2.5中的View上访问Controller模型中的对象?我正在使用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)更改控制器,该类重新映射模型和我知道如何访问的新地图中的错误: / p>
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>
所以最后一个问题是:如何访问从控制器收到的Map?
答案 0 :(得分:0)
方法onBindAndValidate
答案 1 :(得分:0)
好吧,也许这太简单了,甚至不能被认为是一个问题:在尝试处理作为控制器中的参数接收的“错误”对象时,我意识到有一个方法“getModel()”并且从这样一个属性我试图让所有的子属性都来自命令,这就是错误推动我走向错误的方向。
我现在只是从Controller传递“errors”对象:
return new ModelAndView( getSuccessView(), "dataBlock", errors );
我正在使用JSP页面中“errors”对象中的属性:
<div>${resultBlock.fieldError.defaultMessage}</div>