如何在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及以上版本:
阅读ApplicationConversionServiceFactoryBean.java仔细
阅读ApplicationConversionServiceFactoryBean_Roo_ConversionService.aj仔细 你应该在这里找到一个静态内部类CarConverter。它应该有一个很长的前缀 。 你应该在这里找到一个installLabelConverters方法,它有一个长前缀。
将代码CarConverter从2复制到1,删除长前缀。 根据你的喜好更改convert()方法内的代码。
复制从2相关导入语句为1
复制代码installLabelConverters方法从2到1,取出长前缀。
现在将文件保存1.
开始袋鼠,让它更新.aj文件。
使用“mvn tomcat:run”进行编译并再次运行。
:)刚刚度过整个星期日挣扎出同样的问题。 只需添加itemLabel =“您的汽车类的字段名称”。
<field:select field="car"
id="c_de_recordcars_domain_Record_car"
items="${cars}"
**itemLabel="CarName"**
itemValue="id"
path="/cars" />
这看起来比用转换器搞乱了很多。如果你想返回比单个字段更复杂的东西,你也可以创建你自己的getter方法。 – 2012-05-11 18:20:54