2011-01-18 12 views
0

フォームがあり、私のオブジェクトの浮動小数点数のためにCustomNumberEditorを登録しました。モデル内のオブジェクトにプロパティエディタを適用します

@InitBinder 
public void initBinder(WebDataBinder binder){ 
    NumberFormat numberFormat = NumberFormat.getInstance(); 
    binder.registerCustomEditor(Float.class, new CustomNumberEditor(Float.class, numberFormat, true)); 
} 

私は、フォームのセクションを更新するために、Ajaxのコントローラメソッドを持っている(それだけで更新されたHTMLフラグメントを返します)ので、コントローラで、私はこのような何か:そのJSP Iで

public String retrieveFormSection(@PathVariable("id") String id, Model model) { 
    ... 
    model.addAttribute("myObject", myObject); 
    return "myJSP"; 
} 

をただのエディタを使用して、いくつかのデータを印刷したい:myObjectというよう

<input type="text" value="${myObject.myNumber}"/> 

が@ModelAttributeとして配置されていない

は、エディタはそれのために使用されていないオブジェクト。モデルに追加するオブジェクトのフィールドにエディタを登録する方法はありますか?この方法では、エディタのgetAsText()メソッドのみを使用し、setAsText()では使用しないため、エディタを使用しないでください。これに別のSpringの機能を使うべきですか?

ありがとうございました。

答えて

2

あなたはPropertyEditorによって処理された値を表示するには、<spring:bind>を使用することができます:あなたが入力フィールドにそれをレンダリングする必要がある場合

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

しかし、あなたはまた、通常のフォームと同じように、<form:input>を使用することができます。あなたはそれが<form>にしたくない場合は、代わりに<form:form><spring:nestedPath>を使用することができます。

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

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

、私は必要なだけで何のおかげだと!素晴らしい説明。 – Javi

関連する問題