作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在绑定(bind)模型属性中的嵌套对象时遇到问题。我有一本书,其中嵌套了类主题,如下所示:
@Entity
@Table(name = "book")
public class Book {
// Other properties...
// With all getter setter..
@ManyToOne
@JoinColumn(name="subject_id",nullable=false)
@NotBlank(message = "Please select subject")
private Subject subject;
// Getter setter of subject;
}
我还为 Subject 实现了 Formatter 类,如下所示:
@Component
public class SubjectFormatter implements Formatter<Subject>{
@Autowired
SubjectService subjectService;
@Override
public String print(Subject object, Locale locale) {
return object.getName();
}
@Override
public Subject parse(String id, Locale locale) throws ParseException {
return subjectService.getSubject(id);
}
}
并在 spring 配置中添加格式化程序:
@EnableWebMvc
@Configuration
@PropertySource(value = { "classpath:application.properties" })
@ComponentScan(basePackages = "com.vbera.main")
@EnableJpaRepositories(basePackages = "com.vbera.main")
public class SpringConfiguration extends WebMvcConfigurerAdapter {
//Other bean definitions...
@Bean(name="conversionService")
public FormattingConversionService conversionService() {
FormattingConversionServiceFactoryBean bean = new FormattingConversionServiceFactoryBean();
bean.setRegisterDefaultFormatters(false);
bean.setFormatters(getFormatters());
return bean.getObject();
}
private Set<Formatter> getFormatters() {
Set<Formatter> converters = new HashSet<Formatter>();
converters.add(new SubjectFormatter());
return converters;
}
}
我仍然在提交时遇到异常:
Failed to convert property value of type java.lang.String to required type com.vbera.main.pojo.Subject for property subject
主题列表呈现的 JSP View :
<form:label path="subject" for="subject">Subject</form:label>
<form:select path="subject" class="form-control input-md">
<form:option value="">--- Select ---</form:option>
<form:options items="${subjectList}" itemLabel="name"
itemValue="id" />
</form:select>
最佳答案
您的 mvc.xml
中有两个部分文件。
<bean id="conversionService"
class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="formatters">
<set>
<ref bean="MyFormatter1" />
<ref bean="MyFormatter2" />
</set>
</property>
<property name="converters">
<set>
<ref bean="MyConverter1" />
<ref bean="MyConverter2" />
</set>
</property>
</bean>
<mvc:annotation-driven conversion-service="conversionService" />
大多数时候使用 ID 是可以的。但是,在表单中,它会强制 Spring 创建一个具有 null Id 的空对象而不是 null 对象。
关于java - 如何在 Spring MVC Web 应用程序中注册格式化程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25861430/
我是一名优秀的程序员,十分优秀!