【问题标题】:Grails Executing a queryGrails 执行查询
【发布时间】:2015-07-05 17:26:43
【问题描述】:

我在名为 Meeting 的应用中制作了一张表格。在会议中,您可以选择两个人见面、一个字符串日期和一个字符串位置。我想为即将到来的每个人显示会议。所以在索引页面上我有一个控制器

package collegenowapp

import collegenowapp.Meeting
import org.springframework.security.access.annotation.Secured

@Secured(['ROLE_ADMIN', 'ROLE_COORDINATOR', 'ROLE_LIAISON'])
class IndexController {

def index() { 
        def sql = "select * from Meeting"
        def results = Meeting.executeQuery(sql);
        [results:results]
}
}

然后在 index.gsp 我用这个

<%-- The list for meeting --%>
<ul>
    <g:each in="${results}" var="result">
        <li>${result}</li>
    </g:each>
</ul>

页面给了我一个错误,说 * 是不允许的,我将它切换到“日期”这个词,然后整个页面都不起作用。我做错了什么?

【问题讨论】:

    标签: grails grails-orm hsqldb


    【解决方案1】:

    你做错了 GORM 调用:

    def springSecurityService
    
    def index() { 
      def loggedIn = springSecurityService.currentUser
      def results = Meeting.findAllByUser loggedIn, params
      [results:results]
    }
    

    【讨论】:

    • 这实际上并没有做任何事情。该列表根本不显示。另外,我试图把 sql 放进去,这样我就可以和某些人开会了。
    • 要么表格为空,要么${result} 返回无效的 html 实体。后者可以通过${result.encodeAsHTML()}修复
    • 这确实使列表正常工作。唯一的问题是我无法过滤它。如果我在控制器中使用另一个结果集来尝试过滤另一个结果集,那么列表就不会显示。此解决方案显示所有会议,我只想显示特定于登录用户的会议。我怎么会这样查询?
    • 最后一个问题。我做了def search = Teacher.findAllByUsername(loggedIn, params),然后做了def results = Meeting.findAllByTeacher(search, params),它工作了,但是我也希望能够做同样的事情,但使用名为 Liaison 的用户而不是老师。我一直在尝试检查登录用户的角色,如果您是联络员,则使用联络员;如果您是教师,则使用教师。但是,检查似乎成功,但列表不会显示在页面上....感谢您所做的一切都很棒。
    • def search = Teacher.findByUsername(loggedIn) 是正确的
    猜你喜欢
    • 2015-12-28
    • 1970-01-01
    • 2014-09-23
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多