如何格式化從前端命令對象中獲取的值。格式前端的Spring CommandObject變量
它是一個來自DB沒有任何"-"
(連字符)的SSN值。我該如何轉換?
示例:將123456789
轉換爲123-45-6789
。另外在後臺bean這個字段是Int
。
如何格式化從前端命令對象中獲取的值。格式前端的Spring CommandObject變量
它是一個來自DB沒有任何"-"
(連字符)的SSN值。我該如何轉換?
示例:將123456789
轉換爲123-45-6789
。另外在後臺bean這個字段是Int
。
如何創建一個自定義屬性編輯器? Spring使用自定義屬性編輯器來格式化特殊數據,如SSN。
的IntegerPropertyEditor看起來是這樣的:
package com.pnt.common.propertyeditor;
import java.beans.PropertyEditorSupport;
import com.pnt.util.number.NumUtils;
public class IntegerPropertyEditor extends PropertyEditorSupport {
//private static final Log logger = LogFactory.getLog(IntegerPropertyEditor.class);
public void setValue(Object value) {
if (value==null) {
super.setValue(null);
}
else if (value instanceof Integer) {
super.setValue(value);
}
else if (value instanceof String) {
setValue(NumUtils.stringToInteger((String)value));
}
else {
super.setValue(NumUtils.stringToInteger(value.toString()));
}
}
public void setAsText(String text) {
setValue(NumUtils.stringToInteger(text.replaceAll(" ", "")));
}
public String getAsText() {
Integer value = (Integer)getValue();
if (value != null){
String t = value.toString();
int k = 1;
for (int i = t.length() - 1; i >= 0; i--) {
if (k % 3 == 0 && i != 0)
t = t.substring(0, i) + " " + t.substring(i);
k++;
}
return t;
}
else
return "";
}
}
而且你必須在控制器的initBinder()方法來註冊吧:
protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder){
try {
binder.registerCustomEditor(Integer.class, "ssnField", new IntegerPropertyEditor());
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
其中 「ssnField」 是字段的名稱。
現在您只需調整PropertyEditor以匹配您的格式。
如何使用fmt:substring
編輯郵件時,請檢查右欄,郵件格式規則在那裏。請檢查編輯器工具欄,它有工具提示。最後請檢查編輯器下方的預覽區域,它會顯示消息如何結束。 – BalusC 2011-06-02 12:14:56