我有一个表单,我已经为我的对象的浮点数注册了CustomNumberEditor。
@InitBinder
public void initBinder(WebDataBinder binder){
NumberFormat numberFormat = NumberFormat.getInstance();
binder.registerCustomEditor(Float.class, new CustomNumberEditor(Float.class, numberFormat, true));
}
我有一个ajax控制器方法来更新表单的一部分(它只返回一个更新的html片段)所以在控制器中我做了这样的事情:
public String retrieveFormSection(@PathVariable("id") String id, Model model) {
...
model.addAttribute("myObject", myObject);
return "myJSP";
}
在那个JSP中,我只想使用编辑器打印一些数据:
<input type="text" value="${myObject.myNumber}"/>
由于myObject未被放置为@ModelAttribute对象,因此不使用编辑器。有没有办法将编辑器注册到我添加到模型的对象中的字段?也许编辑器不应该用于此,因为这样我只使用编辑器的getAsText()方法而不是setAsText()。我应该使用另一个Spring功能吗?
感谢。
答案 0 :(得分:2)
您可以使用<spring:bind>
显示由PropertyEditor
处理的值:
<spring:bind path = "myObject.myNumber">
<input type="text" value="${status.displayValue}"/>
</spring:bind>
但是,如果您需要在输入字段中呈现它,您也可以使用<form:input>
,与常规表单一样。如果您不希望它位于<form>
,则可以使用<spring:nestedPath>
代替<form:form>
:
<form:form modelAttribute = "myObject">
<form:input path = "myNumber" />
</form:form>
<spring:nestedPath path = "myObject">
<form:input path = "myNumber" />
</spring:nestedPath>