加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在PlayFramework中自定义CRUD list.html

发布时间:2020-12-15 08:40:00 所属栏目:Java 来源:网络整理
导读:你好 我正在尝试为播放应用程序的CRUD部分自定义list.html视图. 我的模特是这样的 我有一个与其他对象有关系的对象,如下所示: @Entitypublic class MyObjectA extends Model { @Required public String myObjectAName; ... @Required @ManyToOne public MyO
你好
我正在尝试为播放应用程序的CRUD部分自定义list.html视图.

我的模特是这样的

我有一个与其他对象有关系的对象,如下所示:

@Entity
public class MyObjectA extends Model {

    @Required
    public String myObjectAName;

    ...

    @Required
    @ManyToOne
    public MyObjectB myObjectB;
}

现在在我覆盖的list.html中,我有这个

<div id="crudListTable">
    #{crud.table fields:['myObjectB','myObjectAName'] /}
</div>

现在,在浏览器中调用以下url http://myplayapp/admin/myObjectAs时,执行此代码将显示类似的内容

myObjectB __ myObjectAName

MyObjectB [1] __嘿这是myObjectAName的名字
MyObjectB [2] __嘿,这是myObjectAName的另一个名字

注意在我的MyObjectB中使用[]中的Object名称和对象id.

所以要在上面的列表中显示MyObjectB的myObjectBName属性,我试试这个:

<div id="crudListTable">
    #{crud.table fields:['myObjectB.myObjectBName','myObjectAName'] /}
</div>

但后来我得到了这个错误

Execution error occured in template {module:crud}/app/views/tags/crud/table.html. >Exception raised was MissingPropertyException : No such property: myObjectB.myObjectBName >for class: models.MyObjectA.

当然MyObjectB有一个公共属性myObjectBName

那么我在这里做错了什么?

解决方法

它不起作用,因为fields参数只是要显示要显示的类的字段名称列表(此处为MyObjectA),而“myObjectB.myObjectBName”不是MyObjectA中字段的名称.

有两种方法可以做到这一点:

简单的解决方案是覆盖MyObjectB的toString()方法.这样做的缺点是,每次显示MyObjectB时都会使用相同的字符串,这可能不是您想要的.

例:

public class MyObjectB extends Model {

  // ...

  @Override
  public String toString(() {
    return this.myObjectBName;
  }

}

列表特定解决方案是使用crud.custom tag.

例:

#{crud.table fields:['myObjectB','myObjectAName']}
   #{crud.custom 'myObjectB'}
       ${object.myObjectB.myObjectBName}
   #{/crud.custom}
#{/crud.table}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读