당신은 문자열에 그 반대 타입 T의 객체의 형식을 Spring Formatter를 사용할 수 있습니다.
package org.springframework.format;
public interface Formatter<T> extends Printer<T>, Parser<T> {
}
배리 피트 맨이 적은 코드를 제외한 말한다 당신이 문자열에 그 반대의 형식을 원하든 경우이 봄 문서에 의한 바람직한 방법으로 동일한을 달성 할 수있는이 인터페이스를 사용하여. 그래서 배리의 UserIdConverter 클래스는 다음과 같이 할 것입니다 :
public class UserIdConverter implements Formatter<User> {
private final UserDao userDao;
@Autowired
public UserIdConverter(UserDao userDao) {
this.userDao = userDao;
}
@Override
public User parse(String userId, Locale locale) {
return userDao.load(userId);
}
@Override
public String print(User target, Locale locale) {
return target.getUserId();
}
}
To register this Formatter 당신이 당신의 XML의 설정이 포함되어야합니다
...
<mvc:annotation-driven conversion-service="conversionService"/>
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean" >
<property name="formatters">
<set>
<bean class="com.x.UserIdConverter"/>
</set>
</property>
</bean>
...
을! 이 클래스는 T 형에서 String 형으로 또는 그 반대로 형식을 지정할 때만 사용할 수 있습니다. 유형 T에서 다른 유형 T1로 형식을 지정할 수 없습니다. (제네릭없이)
...
<mvc:annotation-driven conversion-service="conversionService"/>
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean" >
<property name="converters">
<set>
<bean class="com.x.y.UserIdConverter"/>
</set>
</property>
</bean>
...
이 준수 스프링 2.X 스타일 :이 사건이 있다면 당신은 봄 GenericConverter에 가서 배리 피트 맨의 답변을 사용해야합니다
을 그리고 당신의 XML의 설정에 추가 . 나는 봄 3에서이 변환기를 발견하지 못했다. – maks