Spring RequestParam过于智能
POST到后端的数据是这样的
keywords[]: 关键词1,关键词2
keywords[]: 关键词3,关键词4
@RequestParam(value = "keywords[]") List<String> keywords;
然而经过Spring的RequestParam处理之后,却变成了 ["关键词1", "关键词2", "关键词3", "关键词4"]
;对于 Spring 这种过分聪明的行为我表示很呵呵~
防止这种解析的办法就是覆盖掉原有的converters;不使用英文逗号为分隔符。
<mvc:annotation-driven conversion-service="conversionService"/>
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="lu.tool.util.StringToArrayConverter" />
</set>
</property>
</bean>
package lu.tool.console.util;
import org.springframework.core.convert.converter.Converter;
import org.springframework.util.StringUtils;
import java.util.Arrays;
import java.util.List;
/**
* Created by xiaozi on 8/12/15.
*/
public class StringToArrayConverter implements Converter<String, List<String>>{
@Override
public List<String> convert(String source) {
return Arrays.asList(StringUtils.delimitedListToStringArray(source, ";"));
}
}
大牛 ,手下我的膝盖。