Отформатируйте переменную CommandObject Spring на внешнем интерфейсе - PullRequest
0 голосов
/ 02 июня 2011

Как мне отформатировать значение, полученное из командного объекта на внешнем интерфейсе.

Это значение SSN, которое приходит из БД без каких-либо "-" (дефисов).Как мне конвертировать это?

пример: конвертировать 123456789 в 123-45-6789.Также в компоненте поддержки это поле является Int.

Ответы [ 2 ]

0 голосов
/ 02 июня 2011

Как насчет создания редактора пользовательских свойств?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 в соответствии с вашим форматом.

0 голосов
/ 02 июня 2011

Как насчет использования fmt:substring

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...