我有一个Spring MVC和Web Flow 2.3应用程序。
我想知道的是你在SWF中有一个选择框,其中有一些默认值,例如,'Please Select'没有绑定到支持列表中的任何值。
与我创建转换服务的文档一致:
public class ApplicationConversionServiceFactoryBean extends FormattingConversionServiceFactoryBean {
// formatters
registry.addFormatter(...);
// converters
registry.addConverter(...);
}
除非我想执行在选择框中选择“请选择”这一简单的任务,否则这一切都有效。
格式化程序无法从其解析方法返回null,因此您无法使用它。从格式化器切换到单向转换器(String> Object)然后修复MVC中的问题然而SWF仍然抱怨缺少转换器对象>串。使用此设置我是否真的需要为Object>创建另一个转换器实现?字符串(每次转换基本上都有两个转换器)。
是的,还有其他转换器TwoWayConverter,ObjectToString等等。但是我没有看到这些可以在上面添加,因为它们都是使用以下所有错误类型添加:
registry.addConverter(...);
关于转换的文档至少可以说令人困惑:
答案 0 :(得分:0)
您可以至少将绑定空值或空字符串添加到模型中。因此,您可以使用默认值来选择一个菜单。像这样:
<sf:option value="">Please select...</sf:option>
但是在你的Formatter或Converter中,你应该检查你的模型属性是null还是空字符串,如果是这样,你可以根据需要返回null或空字符串。像这样:
public YourEnum parse(String value, Locale local) throws ParseException {
if(YourEnum.valueOf(YourEnum.class, value.toUpperCase()) == YourEnum.VALUEONE) {
return YourEnum.VALUEONE;
} else if(YourEnum.valueOf(YourEnum.class, value.toUpperCase()) == YourEnum.VALUETWO) {
return YourEnum.VALUETWO;
} else {
return null;
}
}