具有onetomany关系的Spring jsp提交表单
我有两个实体:故事类型和故事。 故事类型可能有很多故事具有onetomany关系的Spring jsp提交表单,jsp,spring-mvc,Jsp,Spring Mvc,我有两个实体:故事类型和故事。 故事类型可能有很多故事 @Entity @Table(name = "stories") public class Story { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private Integer id; @Column(name = "name") private String name;
@Entity
@Table(name = "stories")
public class Story {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;
@Column(name = "name")
private String name;
@Column(name = "description")
private String description;
@Column(name = "crdate")
@Temporal(TemporalType.TIMESTAMP)
private Date crDate;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name = "story_type_id")
private StoryType storyType;
}
@Entity
@Table(name="story_types")
public class StoryType {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;
@Column(name = "name")
private String name;
@OneToMany(fetch = FetchType.EAGER, mappedBy="storyType", cascade = CascadeType.ALL)
private List<Story> stories;
}
@实体
@表(name=“stories”)
公开课故事{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“id”)
私有整数id;
@列(name=“name”)
私有字符串名称;
@列(name=“description”)
私有字符串描述;
@列(name=“crdate”)
@时态(TemporalType.TIMESTAMP)
私人日期;
@manytone(fetch=FetchType.LAZY)
@JoinColumn(name=“story\u type\u id”)
私人故事类型;
}
@实体
@表(name=“故事类型”)
公共类故事类型{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“id”)
私有整数id;
@列(name=“name”)
私有字符串名称;
@OneToMany(fetch=FetchType.EAGER,mappedBy=“storyType”,cascade=CascadeType.ALL)
私人故事列表;
}
我在jsp页面上有一个表单,我正在添加故事,我应该选择故事的类型。但是当我看到提交的值时,只有名称和描述,storyType-null。如何从select发送对象,甚至仅发送类型id
<form role="form" action="/admin/add-story" method="post" commandName="story">
<div class="form-group">
<label for="name">Name</label>
<input type="text" name="name" class="form-control" id="name" autofocus="true" placeholder="Enter name" value="${story.name}">
</div>
<div class="form-group">
<label for="name">Type</label>
<select class="form-control">
<c:forEach items="${types}" var="type">
<option name="storyType" value="${type}">${type.name}</option>
</c:forEach>
</select>
</div>
<div class="form-group">
<label for="description">Desscription</label>
<input type="text" name="description" class="form-control" id="description" autofocus="true" value="${story.description}">
</div>
<input type="submit" class="btn btn-primary" value="Save"/>
</form>
名称
类型
${type.name}
描述
在客户端,您只能存储故事类型的id
<select class="form-control">
<c:forEach items="${types}" var="type">
<option name="storyType" value="${type.id}">${type.name}</option>
</c:forEach>
</select>
注册convertionService
<mvc:annotation-driven conversion-service="conversionService" />
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="com.somepackage.StoryTypeConverter"/>
</set>
</property>
</bean>
之后,控制器中的对象将包含故事类型。
我想知道是否有其他方法来解决这个问题。
我想这可能会有帮助不幸的是,当我在调试模式下运行应用程序时,我发现没有调用转换器。我不确定,我的项目使用spring converter,任何东西都可以正常工作
<mvc:annotation-driven conversion-service="conversionService" />
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="com.somepackage.StoryTypeConverter"/>
</set>
</property>
</bean>