如何格式化从前端命令对象获取的值。
它的SSN值来自数据库,没有任何"-"
(连字符)。我该怎么转换呢?
示例:将123456789
转换为123-45-6789
。此外,在支持bean中,此字段为Int
。
答案 0 :(得分:0)
如何使用fmt:substring
答案 1 :(得分:0)
如何创建自定义属性编辑器? 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以匹配你的格式。