<table:column>引用实体的属性的Roo-tag </table:column>

时间:2011-10-13 11:25:08

标签: spring-mvc spring-roo taglib

我在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>

2 个答案:

答案 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(当然,在java文件中,不在aj文件中)。
  • 向您的UI模型添加属性,例如“teacherName”(使用Model.addAttribute),您可以使用所需名称填充teacherName。
  • 在show.jspx文件中添加如下内容:

    <div><label for="_pupilTeacher">Teacher Name:</label><div class="box">${teacherName}</div></div><br/>

(或者,您可以使用自己的参数创建新的tagx文件)

希望它有所帮助。

拉​​杜