Можно указать подкласс, к которому вам нужно привязаться. Вы должны добавить дополнительный параметр (скрытый ввод) в свою форму, который указывает тип, к которому необходимо привязаться. Это поле должно иметь то же имя, что и атрибут модели в этой форме дела. Затем вам нужно реализовать преобразователь, который преобразует это значение строкового параметра в фактический экземпляр, к которому вам нужно привязаться.
Ниже приведены изменения, которые необходимо реализовать.
1) В вашем jsp добавьте скрытый ввод внутри вашего
<form:form action="/submit" commandName="shape" method="post">
<input type="hidden" name="shape" value="round"/>
//other form tags
</form:form>
2) Реализовать конвертер для преобразования из строки в форму
public class StringToShapeConverter implements Converter<String,Shape>{
public Shape convert(String source){
if("round".equalsIgnoreCase(source)){
return new Round();
}
//other shapes
}
}
3) Затем зарегистрируйте свой конвертер, чтобы Spring MVC знал об этом. Если вы используете конфигурацию Java, вам необходимо расширить WebMvcConfigurerAdapter и переопределить метод addFormatters.
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter{
@Override
public void addFormatters(FormatterRegistry registry){
registry.addConverter(new StringToShapeConverter());
}
}
Если вы используете конфигурацию xml, вы можете использовать элемент mvc:annotation-driven, чтобы указать, какую службу преобразования использовать. Затем зарегистрируйте конвертер с помощью FormattingConversionSErviceFactoryBean.
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<mvc:annotation-driven conversion-service="conversionService"/>
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="some.package.StringToShapeConverter"/>
</set>
</property>
</bean>
</beans>
person
ekem chitsiga
schedule
03.06.2016
Round
из формы - person Priyamal   schedule 03.06.2016