2011-10-13 52 views
1

我有一個Roo項目中的兩個班(學生,班)和他們的腳手架的意見。<table:column>引用實體的屬性的Roo-tag

瞳孔和類具有1:1的關係

在瞳孔的list.jspx我想爲類的屬性顯示一列。

我不知道提供給表的正確屬性:column-tag。 這下面的例子給出了錯誤:

SpelEvaluationException: EL1027Epos 4): Indexing into type 'com.pupil' is not supported

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

回答

1

這是我做的,不是爲了上市,而是用於顯示老師的名字,當你查看瞳孔實體:

  • 編輯控制器和具體的方法顯示(在Java文件,當然不在aj文件中)。
  • 向您的UI模型添加一個屬性,例如「teacherName」(使用Model.addAttribute),其中您使用所需的名稱填充teacherName。
  • 添加在show.jspx文件是這樣的:

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

(或者,你可以創建自己的參數的新Tagx傳送文件)

希望它幫助。

拉杜

3

而是與JSPX文件亂搞的,你可以簡單地實現了ApplicationServiceFactoryBean.javaTeacher實體轉換器做到這一點。

有關示例,請參閱下面的轉換方法。

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(); 
     } 
} 

默認狀態下,袋鼠產生這些轉換器和存儲它們的ApplicationConversionServiceFactoryBean_Roo_ConversionService.aj文件中。

可以在重構推動相關方法爲Teacher實體從這個AspectJ的文件到 ApplicationServiceFactoryBean.java文件,然後實現自己的轉換將被用來顯示整個應用程序的Teacher名稱,如上面的例子。

乾杯和Roo一切順利!

+0

我寧願想要在它自己的列中有教師名稱,而不是在與班級名稱相同的列中。爲此,我無法使用您的解決方法。 – Hedge

+0

首先了解答案,並嘗試它,而不是假設的事情。祝一切順利。 :) – bhagyas

+0

我在幾周前推入了ApplicationConversionServiceFactoryBean的所有方法並對其進行了調整。有些人甚至使用你所描述的內容,但在這裏它只是不做我在問題中描述的內容。我可以在一列中顯示pupilName和classes屬性teacherName,但不能單獨顯示。 – Hedge

相關問題