Я БЫЛ ПОИСК ЧАСОВ И НАЙДЕН НЕСКОЛЬКО ПОХОЖИХ ВОПРОСОВ, НО МНЕ РЕШЕНИЕ НЕ РАБОТАЛО.
Я только что разработал небольшое приложение Spring MVC
с одна страница, которая содержит форму с двумя полями ввода и выборку, заполненную из моего хранилища (с использованием модели). Итак, в основном у меня есть две модели:
class A {
// Primitive properties, getters and setters
}
class B {
// Primitive properties, getters and setters
private A a;
}
Таким образом, входные данные формы принадлежат B
, что является моим ModelAttribute
. Этот класс также имеет ссылку на A
, что означает, что форма имеет выбор (с использованием пружинных форм), содержащий A
экземпляров. Это мой JSP
код:
<c:url var="newB" value="/newB" />
<form:form action="${newB}" method="POST" modelAttribute="b">
<table>
<tr>
<td><form:label path="">B Property 1: </form:label></td>
<td><form:input path="prop1"/></td>
</tr>
<tr>
<td><form:label path="">B Property 2: </form:label></td>
<td><form:input path="prop2"/></td>
</tr>
<tr>
<td><form:label path="">A : </form:label></td>
<td><form:select path="a.prop1">
<form:options items="${alist}" itemValue="prop1" itemLabel="prop2" />
</form:select></td>
</tr>
</table>
<form:button>SUBMIT</form:button>
</form:form>
<form:select>
гарантирует, что я только a
внедряю, используя его свойство prop1
, так как весь объект превращается в строку, мне нужно сделать это так ( В противном случае, если есть лучший способ, это также будет оценено ). Поэтому для того, чтобы я также внедрил другие свойства, я попытался использовать класс Converter
, который принимает prop1
(идентификатор, если вы, который) из a
и находит объект в моем хранилище. Примерно так:
public class StringToAConverter implements Converter<String, A> {
@Autowired(required = true)
private MyService service;
@Override
public A convert(String prop1) {
return service.retrieve(Integer.parseInt(prop1));
}
}
А это моя XML
конфигурация:
<mvc:annotation-driven conversion-service="conversionService" />
<beans:bean
id="conversionService"
class="org.springframework.context.support.ConversionServiceFactoryBean">
<beans:property name="converters">
<beans:list>
<beans:bean class="myproject.converters.StringToAConverter"/>
</beans:list>
</beans:property>
</beans:bean>
Так почему же это не работает? Что я делаю не так?