当我们使用 Spring Roo 命令创建 Spring MVC 页面时,使用 Oracle DB 会创建带有列表的页面,其中外键被相应的记录替换。
我只想显示外键,不需要用记录替换键。
有没有获得相同的选项。我无法在论坛中找出相同的形式。
问候
当我们使用 Spring Roo 命令创建 Spring MVC 页面时,使用 Oracle DB 会创建带有列表的页面,其中外键被相应的记录替换。
我只想显示外键,不需要用记录替换键。
有没有获得相同的选项。我无法在论坛中找出相同的形式。
问候
鉴于...
// 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 中为客户“推入”重构转换器。查看 .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 自己构建表单 - 您有更多选项,然后是查看文件类型、实现模式等......
肯