grails,将数据从控制器传递到生成的_form.gsp视图

时间:2015-05-07 14:02:25

标签: grails view controller gorm

我有一个域类(Booking),其中包含User属性(使用SpringSecurityCore插件)和相应的视图(_form,create,edit,index,show.gsp)。

普通用户不应该以正常方式设置用户:

<g:select id="user" name="user.id" from="${usermanagement.User.list()}" optionKey="id" required="" value="${dailyBookingInstance?.user?.id}" class="many-to-one"/>

有了这个,每个用户都可以从下拉菜单中选择所有用户。普通用户不应该这样做,应该自动设置为当前登录用户。

为此,我在BookingController中创建了一个函数:

def currentUser() {

        User user = springSecurityService.getCurrentUser()
        log.error(user)
        [user: user]    
    }

日志记录有效,我在控制台中得到了正确的输出 - 但我不知道如何在我的_form.gsp中获得此用户。据我所知,user应该在名为currentUser.gsp的视图中可用,但我需要他_form.gsp

我的目标是在AdminUser之间通过

分歧
<sec:ifAllGranted roles="ROLE_ADMIN">secure stuff here</sec:ifAllGranted>

并在那里设置用户下拉菜单的内容:

  • 管理员:from="${usermanagement.User.list()}
  • 普通用户:from="${user}(从Controller中的currentUser()返回)

使用此(普通用户)我收到错误:Cannot get id from null,这意味着用户在视图中不可用。

1 个答案:

答案 0 :(得分:1)

_form.gsp是一个模板,你不会直接使用它的控制器方法。您必须将值传递给某些真实视图。

默认情况下,在edit.gsp和create.gsp中调用_form.gsp模板。

您应该能够将当前用户返回到您的视图,如下所示:

def edit(Booking bookingInstance){
     ...
     User user = springSecurityService.getCurrentUser()
     respond bookingInstance, model:[user:user]
}

然后在_form.gsp

中使用它