【问题标题】:Apply property editor to object in the model将属性编辑器应用于模型中的对象
【发布时间】:2011-01-18 11:47:02
【问题描述】:

我有一个表单,并且我已经为我的对象的浮点数注册了 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 功能吗?

谢谢。

【问题讨论】:

    标签: java spring data-binding spring-mvc property-editor


    【解决方案1】:

    您可以使用&lt;spring:bind&gt;显示PropertyEditor处理的值:

    <spring:bind path = "myObject.myNumber">
        <input type="text" value="${status.displayValue}"/> 
    </spring:bind>
    

    但是,如果您需要在输入字段中呈现它,您也可以使用&lt;form:input&gt;,就像使用常规表单一样。如果您不希望它位于&lt;form&gt; 中,可以使用&lt;spring:nestedPath&gt; 代替&lt;form:form&gt;

    <form:form modelAttribute = "myObject">
        <form:input path = "myNumber" />
    </form:form>
    
    <spring:nestedPath path = "myObject">
        <form:input path = "myNumber" />
    </spring:nestedPath>
    

    【讨论】:

      猜你喜欢
      • 2019-07-06
      • 2016-06-12
      • 1970-01-01
      • 2011-08-14
      • 2012-05-23
      • 2011-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多