Java 在PlayFramework中自定义CRUD list.html
你好 我正在尝试为play应用程序的CRUD部分自定义list.html视图 我的模型是这样的 我有一个对象与另一个对象的关系如下:Java 在PlayFramework中自定义CRUD list.html,java,crud,playframework,Java,Crud,Playframework,你好 我正在尝试为play应用程序的CRUD部分自定义list.html视图 我的模型是这样的 我有一个对象与另一个对象的关系如下: @Entity public class MyObjectA extends Model { @Required public String myObjectAName; ... @Required @ManyToOne public MyObjectB myObjectB; } 现在我在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>
#{crud.table字段:['myObjectB','myObjectAName']/}
现在,在浏览器中调用以下url时,执行此代码将显示如下内容
myObjectB\uumyObjectAName
MyObjectB[1]\uu嘿,这是myObjectAName的名称MyObjectB[2]\uu嘿,这是myObjectAName的另一个名称 请注意在[]中为MyObjectB使用了对象名和对象id 因此,为了在上面的列表中显示MyObjectB的myObjectBName属性,我尝试以下方法:
<div id="crudListTable">
#{crud.table fields:['myObjectB.myObjectBName', 'myObjectAName'] /}
</div>
#{crud.table字段:['myObjectB.myObjectBName','myObjectAName']/}
但是我得到了这个错误
模板{module:crud}/app/views/tags/crud/table.html中发生执行错误。>引发的异常丢失了类models.MyObjectA的PropertyException:没有此类属性:myObjectB.myObjectBName>
当然,MyObjectB有一个公共属性myObjectBName
那么我在这里做错了什么呢?它不起作用,因为
字段
参数只获取要显示的类的字段名列表(这里MyObjectA
),而“myObjectB.myObjectBName”
不是MyObjectA
中的字段名
有两种方法可以做到这一点:
简单的解决方案是重写MyObjectB
的toString()
方法。这样做的缺点是,每次显示MyObjectB
时都使用相同的字符串,这可能不是您想要的
例如:
public class MyObjectB extends Model {
// ...
@Override
public String toString(() {
return this.myObjectBName;
}
}
#{crud.table fields:['myObjectB', 'myObjectAName']}
#{crud.custom 'myObjectB'}
${object.myObjectB.myObjectBName}
#{/crud.custom}
#{/crud.table}
列表特定的解决方案是使用
例如:
public class MyObjectB extends Model {
// ...
@Override
public String toString(() {
return this.myObjectBName;
}
}
#{crud.table fields:['myObjectB', 'myObjectAName']}
#{crud.custom 'myObjectB'}
${object.myObjectB.myObjectBName}
#{/crud.custom}
#{/crud.table}
谢谢你,罗托拉!crud.custom标签正是我所需要的