Grails 看不到数据库 table 的内容
Grails can't see database table's content
我正在使用 Grails 2.4.4 版和 postgresql。当我 运行 应用程序时,我看到错误消息 Cannot get property 'myname' on null object
。我知道 table 不为空并且数据库连接正确,因为我可以使用脚手架上传和查看数据。
域名class代码:
class My_table {
//Integer id
String myname
static constraints = {}
}
控制器代码:
class My_tableController {
def index() {
def my_table = My_table.list()
[my_table:my_table]
}
我的 index.gsp 文件:
<g:select name="name" from="${my_table}"/><br/>
<label>${my_table.myname} </label><br/>
Table 是大多数数据库中的保留字。要么更改 class 和 属性 的名称,要么将它们映射到其他未保留的名称:
static mapping = {
table 'my_table'
}
将名为 table 的列添加到名为 table 的 table 是有问题的,因为在静态映射块中已经存在名为 table 的方法。较新版本的 grails 有一个更灵活的 ORM 映射块。
static mapping = {
table 'my_table'
table column: 'my_table' // unsure if this would work since it overlaps with the other mapping method
}
在表格中,我看到错误发生在这一行:<label>${my_table.myname} </label><br/>
。
这里你是在断章取意地调用 属性 名字
<g:select name="name" from="${my_table}"/><br/>
<label>${my_table.myname} </label><br/>
您收到错误消息,因为 my_table
是 My_table
个实例的列表,并且没有 属性 命名的名称。
解决此问题的方法可能是:
<select name="name">
<g:each in="${my_table}" var="table">
<option value="${table.name}">${table.name}</option>
</g:each>
</select>
还要记住标签标签在 select 内无效,因为您可以阅读 允许的内容 零个或多个 <option>
或 <optgroup>
元素。 在 https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select
我正在使用 Grails 2.4.4 版和 postgresql。当我 运行 应用程序时,我看到错误消息 Cannot get property 'myname' on null object
。我知道 table 不为空并且数据库连接正确,因为我可以使用脚手架上传和查看数据。
域名class代码:
class My_table {
//Integer id
String myname
static constraints = {}
}
控制器代码:
class My_tableController {
def index() {
def my_table = My_table.list()
[my_table:my_table]
}
我的 index.gsp 文件:
<g:select name="name" from="${my_table}"/><br/>
<label>${my_table.myname} </label><br/>
Table 是大多数数据库中的保留字。要么更改 class 和 属性 的名称,要么将它们映射到其他未保留的名称:
static mapping = {
table 'my_table'
}
将名为 table 的列添加到名为 table 的 table 是有问题的,因为在静态映射块中已经存在名为 table 的方法。较新版本的 grails 有一个更灵活的 ORM 映射块。
static mapping = {
table 'my_table'
table column: 'my_table' // unsure if this would work since it overlaps with the other mapping method
}
在表格中,我看到错误发生在这一行:<label>${my_table.myname} </label><br/>
。
这里你是在断章取意地调用 属性 名字
<g:select name="name" from="${my_table}"/><br/>
<label>${my_table.myname} </label><br/>
您收到错误消息,因为 my_table
是 My_table
个实例的列表,并且没有 属性 命名的名称。
解决此问题的方法可能是:
<select name="name">
<g:each in="${my_table}" var="table">
<option value="${table.name}">${table.name}</option>
</g:each>
</select>
还要记住标签标签在 select 内无效,因为您可以阅读 允许的内容 零个或多个 <option>
或 <optgroup>
元素。 在 https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select