0

当我们使用 Spring Roo 命令创建 Spring MVC 页面时,使用 Oracle DB 会创建带有列表的页面,其中外键被相应的记录替换。

我只想显示外键,不需要用记录替换键。

有没有获得相同的选项。我无法在论坛中找出相同的形式。

问候

4

1 回答 1

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 中为客户“推入”重构转换器。查看 .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 自己构建表单 - 您有更多选项,然后是查看文件类型、实现模式等......

于 2013-06-15T21:50:08.223 回答