如何在ROO生成的应用程序的selectbox中显示属性属性

问题描述:

我目前正在将自己融入Spring-Roo和Spring-MVC。我有一个Roo为我生成的相当简单的应用程序。它由两个实体组成,记录和汽车,其中记录有一个特定汽车的参考。如何在ROO生成的应用程序的selectbox中显示属性属性

初始设置后,我更改其中一个视图以使用字段:选择并显示组合框以选择可用汽车并将它们添加到记录中。

<field:select field="car" id="c_de_recordcars_domain_Record_car" items="${cars}" path="/cars" /> 

这个标签让我头疼。到目前为止,comboxbox显示所有可用的汽车......但它通过显示所有属性(如“Car 1 Tue Jan 18 00:00:00 CET 2011 Friver1”)。我想要的只是组合框只显示名称属性(“Car 1”)。

在标签中,只有“itemValue”-Attribute,但这只能呈现放入请求参数中的值......我需要类似“displayValue”的地方,我可以指向java字段用于显示。

我该如何做到这一点? 谢谢

Spring Roo的(使用Spring MVC功能)提供使用应用程序转换服务。您应该在ApplicationConversionServiceFactoryBean内实施方法Converter<Car, String> getCarConverter()

有关详细信息,请参阅reference

您可以尝试在实体Car中添加toString方法,其中返回Car的名称字段。 和path:/src/main/webapp/WEB-INF/tags/form/fields/select.tag X 更新验证此配置文件的所有选项内容:

<option value="${item}"> 
    <spring:eval expression="item" /> 
</option> 

到:

<option value="${item}"> 
    ${item} 
</option> 

对于Spring Roo的1.1.4及以上版本:

  1. 阅读ApplicationConversionServiceFactoryBean.java仔细

  2. 阅读ApplicationConversionServiceFactoryBean_Roo_ConversionService.aj仔细 你应该在这里找到一个静态内部类CarConverter。它应该有一个很长的前缀 。 你应该在这里找到一个installLabelConverters方法,它有一个长前缀。

  3. 将代码CarConverter从2复制到1,删除长前缀。 根据你的喜好更改convert()方法内的代码。

  4. 复制从2相关导入语句为1

  5. 复制代码installLabelConverters方法从2到1,取出长前缀。

  6. 现在将文件保存1.

  7. 开始袋鼠,让它更新.aj文件。

  8. 使用“mvn tomcat:run”进行编译并再次运行。

:)刚刚度过整个星期日挣扎出同样的问题。 只需添加itemLabel =“您的汽车类的字段名称”。

<field:select field="car" 
       id="c_de_recordcars_domain_Record_car" 
       items="${cars}" 
      **itemLabel="CarName"** 
       itemValue="id" 
       path="/cars" /> 
+1

这看起来比用转换器搞乱了很多。如果你想返回比单个字段更复杂的东西,你也可以创建你自己的getter方法。 – 2012-05-11 18:20:54