1

我有这个表格来创建Enrichment

<form:form method="post" action="..." modelAttribute="enrichment">
    ...
    <form:select path="tag"> 
        <form:options items="${tagList}" itemValue="id" itemLabel="label" />
    </form:select>
    ...

Enrichment有一个Tag属性。因此,当用户在标签列表中选择了一个标签时,tag.id (它是一个字符串)将通过表单发送。我不认为我可以直接发送标签对象,对吗?所以我根据http://static.springsource.org/spring/docs/current/spring-framework-reference/html/validation.html#core-convert-Converter-API编写了一个转换器来将字符串转换为标签. 所以我这样做了:

public class IdToTagConverter implements Converter<String, Tag> {

    @Autowired
    TagService tagService;

    public Tag convert(String id) {     
        return tagService.findTagById(Integer.parseInt(id));
    }
}

我创建了 bean:

<bean id="conversionService"
      class="org.springframework.context.support.ConversionServiceFactoryBean">
    <property name="converters">
        <list>
            <bean class="exemple.IdToTagConverter"/>
        </list>
    </property>
</bean>

我认为它会自动进行转换。但是错误信息仍然在这里:

[无法将类型“java.lang.String”的属性值转换为属性“tag”所需的类型“example.Tag”;嵌套异常是 java.lang.IllegalStateException:无法将类型 [java.lang.String] 的值转换为属性“标签”所需的类型 [exemple.Tag]:找不到匹配的编辑器或转换策略]

我错过了什么?

4

2 回答 2

1

在这里找到解决方案:http: //forum.springsource.org/showthread.php?84003-Converters-no-matching-editors-or-conversion-strategy-found

我刚换

<mvc:annotation-driven />

经过

<mvc:annotation-driven conversion-service="conversionService" />

它奏效了。为什么?Spring MVC 巫毒。

于 2013-04-30T08:56:04.793 回答
0

Looks like Spring is not aware of your converter, or Conversion Service. Follow this part of the documentation to register your custom converter - > http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/validation.html#format-configuring-FormattingConversionService

于 2013-04-29T15:32:20.897 回答