当我们使用Spring Roo命令创建Spring MVC页面时使用Oracle DB,它会创建一个列表,其中包含由相应记录替换的外键。
我想只显示外键,不需要用记录替换键。
是否可以选择相同的选项。我无法找出论坛的相同形式。
此致
答案 0 :(得分:3)
...鉴于
// Spring Roo 1.2.4.BUILD-SNAPSHOT [rev 7c12381] log opened at 2013-06-15 17:13:26
project --topLevelPackage org.foo.bar --projectName baz
jpa setup --provider HIBERNATE --database HYPERSONIC_PERSISTENT
entity jpa --class ~.db.Customer
field string name
entity jpa --class ~.db.Sale
field string --fieldName description
field number --type java.math.BigDecimal --fieldName amount
field reference --fieldName customer --type ~.db.Customer --cardinality MANY_TO_ONE
focus --class ~.db.Customer
field set --fieldName sales --type ~.db.Sale --cardinality ONE_TO_MANY
web mvc setup
web mvc all --package ~.web
quit
当您显示客户列表(一方)时,它只显示客户数据。对于销售(多)方,它显示Customer列,其中所有字段的字段值连接在一起(在我们的例子中只是名称)。
以下是相关标签:
<table:table data="${sales}"
id="l_org_foo_bar_db_Sale"
path="/sales" z="4N/i5ige4wSEk62VRQK6R47NPIQ=">
...
<table:column id="c_org_foo_bar_db_Sale_customer"
property="customer" z="v8Cm6lkbb5e5TiYflyqTaRGopvg="/>
...
</table>
不幸的是,表格和列标签有点棘手。列标记用于呈现每行的表标题和正文,以便table:table标记负责。它不允许像property="customer.id"
这样的东西杀死那个策略。
其中一种方法是在ApplicationConversionServiceFactoryBean中“推入”重构Customer的转换器。查看.aj文件并为您的实体提取方法,将其替换为只返回ID的内容:
public Converter<Customer, String> getCustomerToStringConverter() {
return new Converter<Customer, String>() {
public String convert(Customer customer) {
return customer.getId().toString();
}
};
问题是每个下拉列表都会获得新值。因此,如果您有一个编辑表单,并且您想在那里引用客户的名称,以便人们可以做出明智的决定,那么它将无法开箱即用。
也有办法解决这个问题。您可以修改更新中的field:select
标记并创建销售域的表单 - 添加itemLabel
属性以确定下拉列表中显示的字段。它不需要表达式,因此您可能希望创建在必须显示时返回多个字段连接的getter。
我们在RooInAction第6章中介绍了脚手架的那种自定义。但是,最终你可能只想使用直接的Spring MVC切换到自己构建表单 - 你有更多的选项,然后用于视图文件类型,实现模式等...
肯