我在Roo项目中有两个班级(学生,班级)和他们的脚手架观点。
学生和班级有1:1的关系
在pupil的list.jspx中,我想显示一个类属性的列。
我不知道给表的正确属性:column-tag。 以下示例给出了错误:
SpelEvaluationException:EL1027Epos 4):不支持索引到'com.pupil'类型
<table:table data="${pupil}" duplicate="true" id="l_com_pupil" path="/admin/pupil" z="user-managed">
<table:column id="c_com_pupil_pupilName" property="pupilName" z="user-managed"/>
<!-- I'd like to display the attribute teacher_name of the class 'class' here but it doesn't work -->
<table:column id="c_com_pupil_class_teacherName" property="teacherName" z="user-managed"/>
</table:table>
答案 0 :(得分:3)
您可以通过为Teacher
中的ApplicationServiceFactoryBean.java
实体实现转换器,而不是乱搞jspx文件。
请参阅以下转换方法以获取示例。
static class com.mycompany.test.controllers.ApplicationConversionServiceFactoryBean.TeacherConverter implements org.springframework.core.convert.converter.Converter<com.mycompany.test.domain.master.Teacher, java.lang.String> {
public String convert(Teacher teacher) {
return new StringBuilder().append(teacher.getName()).toString();
}
}
默认情况下,Roo生成这些转换器,它们存储在ApplicationConversionServiceFactoryBean_Roo_ConversionService.aj
文件中。
您可以将此{aspect}文件中的Teacher
实体的相关方法重构为
ApplicationServiceFactoryBean.java
文件然后实现您自己的转换,该转换将用于在整个应用程序中显示Teacher
名称,如上例所示。
与Roo一起欢呼!
答案 1 :(得分:1)
这就是我这样做的方式,不是为了列出,而是为了在你查看学生实体时显示老师的名字:
在show.jspx文件中添加如下内容:
<div><label for="_pupilTeacher">Teacher Name:</label><div class="box">${teacherName}</div></div><br/>
(或者,您可以使用自己的参数创建新的tagx文件)
希望它有所帮助。
拉杜