Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring MVC:在使用';时获取完整的对象而不是字符串;选择选项';_Java_Spring_Spring Mvc - Fatal编程技术网

Java Spring MVC:在使用';时获取完整的对象而不是字符串;选择选项';

Java Spring MVC:在使用';时获取完整的对象而不是字符串;选择选项';,java,spring,spring-mvc,Java,Spring,Spring Mvc,我有一个类课程,它包含对课程对象的引用,如下所示: public class Lesson { ... private Course course; ... public Course getCourse() { return course; } public void setCourse(Course course) { this.course = course; } ... } 我想通过选择表单

我有一个类
课程
,它包含对
课程
对象的引用,如下所示:

public class Lesson {
    ...
    private Course course;
    ...
    public Course getCourse() {
        return course;
    }

    public void setCourse(Course course) {
       this.course = course;
    }
    ...
}
我想通过选择表单在
课程
对象上设置
课程
属性:

<form:form method="post" action="addLesson" modelAttribute="lesson">
 <form:select path="course">
  <form:options items="${courses}"/>
 </form:select>
 <input type="submit" name="addLesson" value="Add lesson">
</form:form>
问题是它将
课程
对象(由
toString()
定义)的
字符串
表示形式传递给
课程
对象的
课程
设置器

如何使用我的选择表单正确设置
课程
对象的
课程
属性?

根据您需要设置
项目值
项目标签
表单:选项
标记上,否则,如您所述,该值将是对象的
toString()
itemValue
itemLable
应该引用
课程
bean中的属性

假设你的
课程
类有一个属性
名称
,那么你的表单应该如下所示:

<form:form method="post" action="addLesson" modelAttribute="lesson">
 <form:select path="course">
  <form:options items="${courses}"  itemValue="name" itemLabel="name"/>
 </form:select>
 <input type="submit" name="addLesson" value="Add lesson">
</form:form>

根据需要,您需要在
表单:options
标签上设置
itemValue
itemlab
,否则,正如您已经提到的,该值将是对象的
toString()
itemValue
itemlab
应该引用
课程
bean中的属性

假设你的
课程
类有一个属性
名称
,那么你的表单应该如下所示:

<form:form method="post" action="addLesson" modelAttribute="lesson">
 <form:select path="course">
  <form:options items="${courses}"  itemValue="name" itemLabel="name"/>
 </form:select>
 <input type="submit" name="addLesson" value="Add lesson">
</form:form>

根据需要,您需要在
表单:options
标签上设置
itemValue
itemlab
,否则,正如您已经提到的,该值将是对象的
toString()
itemValue
itemlab
应该引用
课程
bean中的属性

假设你的
课程
类有一个属性
名称
,那么你的表单应该如下所示:

<form:form method="post" action="addLesson" modelAttribute="lesson">
 <form:select path="course">
  <form:options items="${courses}"  itemValue="name" itemLabel="name"/>
 </form:select>
 <input type="submit" name="addLesson" value="Add lesson">
</form:form>

根据需要,您需要在
表单:options
标签上设置
itemValue
itemlab
,否则,正如您已经提到的,该值将是对象的
toString()
itemValue
itemlab
应该引用
课程
bean中的属性

假设你的
课程
类有一个属性
名称
,那么你的表单应该如下所示:

<form:form method="post" action="addLesson" modelAttribute="lesson">
 <form:select path="course">
  <form:options items="${courses}"  itemValue="name" itemLabel="name"/>
 </form:select>
 <input type="submit" name="addLesson" value="Add lesson">
</form:form>

您可以使用直接绑定课程对象,而不是某些课程对象属性

实现转换器接口,在您的情况下,该接口可以将选定的courseName转换为课程:

public class CourseConverter implements Converter<String, Course> {
    public Course convert(String source) {
    List<Course> courseList = //Populate courseList the way you did in Lesson
    Course course = //Get course object based on selected courseName from courseList;
    return course;
    }
}
公共类CourseConverter实现转换器{
公共课程转换(字符串源){
List courseList=//按照第一课中的方式填充courseList
Course Course=//根据courseList中选择的courseName获取课程对象;
返回路线;
}
}
现在注册转换器:

<mvc:annotation-driven conversion-service="conversionService"/>

<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean" >
    <property name="converters">
        <set>
            <bean class="your.package.CourseConverter"/>
        </set>
    </property>
</bean>

并将您的表单:选项更改为:

<form:options items="${courses}"  itemValue="courseName" itemLabel="courseName"/>   

您可以使用直接绑定课程对象,而不是某些课程对象属性

实现转换器接口,在您的情况下,该接口可以将选定的courseName转换为课程:

public class CourseConverter implements Converter<String, Course> {
    public Course convert(String source) {
    List<Course> courseList = //Populate courseList the way you did in Lesson
    Course course = //Get course object based on selected courseName from courseList;
    return course;
    }
}
公共类CourseConverter实现转换器{
公共课程转换(字符串源){
List courseList=//按照第一课中的方式填充courseList
Course Course=//根据courseList中选择的courseName获取课程对象;
返回路线;
}
}
现在注册转换器:

<mvc:annotation-driven conversion-service="conversionService"/>

<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean" >
    <property name="converters">
        <set>
            <bean class="your.package.CourseConverter"/>
        </set>
    </property>
</bean>

并将您的表单:选项更改为:

<form:options items="${courses}"  itemValue="courseName" itemLabel="courseName"/>   

您可以使用直接绑定课程对象,而不是某些课程对象属性

实现转换器接口,在您的情况下,该接口可以将选定的courseName转换为课程:

public class CourseConverter implements Converter<String, Course> {
    public Course convert(String source) {
    List<Course> courseList = //Populate courseList the way you did in Lesson
    Course course = //Get course object based on selected courseName from courseList;
    return course;
    }
}
公共类CourseConverter实现转换器{
公共课程转换(字符串源){
List courseList=//按照第一课中的方式填充courseList
Course Course=//根据courseList中选择的courseName获取课程对象;
返回路线;
}
}
现在注册转换器:

<mvc:annotation-driven conversion-service="conversionService"/>

<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean" >
    <property name="converters">
        <set>
            <bean class="your.package.CourseConverter"/>
        </set>
    </property>
</bean>

并将您的表单:选项更改为:

<form:options items="${courses}"  itemValue="courseName" itemLabel="courseName"/>   

您可以使用直接绑定课程对象,而不是某些课程对象属性

实现转换器接口,在您的情况下,该接口可以将选定的courseName转换为课程:

public class CourseConverter implements Converter<String, Course> {
    public Course convert(String source) {
    List<Course> courseList = //Populate courseList the way you did in Lesson
    Course course = //Get course object based on selected courseName from courseList;
    return course;
    }
}
公共类CourseConverter实现转换器{
公共课程转换(字符串源){
List courseList=//按照第一课中的方式填充courseList
Course Course=//根据courseList中选择的courseName获取课程对象;
返回路线;
}
}
现在注册转换器:

<mvc:annotation-driven conversion-service="conversionService"/>

<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean" >
    <property name="converters">
        <set>
            <bean class="your.package.CourseConverter"/>
        </set>
    </property>
</bean>

并将您的表单:选项更改为:

<form:options items="${courses}"  itemValue="courseName" itemLabel="courseName"/>   

通常用于UI呈现
格式化程序
与转换服务一起使用。但在Spring3之前,使用了
属性编辑器

我已经为您的案例分享了github项目示例

@组件(“课程格式”)
公共类CourseFormatter实现格式化程序{
private CourseRepository CourseRepository=新课程Repository();
@凌驾
公共字符串打印(课程,区域设置arg1){
return-course.getName();
}
@凌驾
公共课程解析(字符串actorId,区域设置arg1){
return courseRepository.getCourse(actorId);
}
}

通常用于UI呈现
格式化程序
与转换服务一起使用。但在Spring3之前,使用了
属性编辑器

我已经为您的案例分享了github项目示例

@组件(“课程格式”)
公共图书馆