具有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>