将Grails逻辑从视图移动到控制器

时间:2011-08-17 00:20:55

标签: grails groovy

这个问题是here问题的延续。

下面的代码来自我的一个观点,它工作正常,但我很难将此代码移动到控制器。如果我的包和类在下面的代码中不清楚,请查看上一个问题以了解它们的排列方式。

<g:set var="roleAdmin" value='${org.me.example.userrole.Role.findByAuthority("ROLE_ADMIN")}' />
<g:set var="roleOfficeProfessional" value='${org.me.example.userrole.Role.findByAuthority("ROLE_OFFICE_PROFESSIONAL")}' />
<g:set var="roleDriver" value='${org.me.example.userrole.Role.findByAuthority("ROLE_DRIVER")}' />
<g:select name="loggedBy.id" from="${org.me.example.userrole.UserRole.findAllByRoleInList([roleAdmin, roleOfficeProfessional, roleDriver]).user}" optionKey="id" value="${loadInstance?.loggedBy?.id}"  />   

这可能是我个人的一个基本误解,但是我无法获得我在控制器中使用的任何方法在我的视图中工作,只有Grails创建的方法(即list,{ {1}},createdelete等)可行。任何帮助/建议都会有所帮助。

1 个答案:

答案 0 :(得分:2)

来自和属性的不是来自控制器中的方法/操作。它们通常来自请求对象。我在你的另一个线程中给你代码来正确地执行此操作,但是这里再次,稍微更详细......

class SomeController {

   def show = {
     def loadInstance = whateverYouGetItFrom
     def users = UserRole.findAllByRoleInList([roleAdmin, roleOfficeProfessional, roleDriver]).user
     [loadInstance:loadInstance,users:users]
   }
}

然后你会有一个包含

的show.gsp
<g:select name="loggedBy.id" from="${users}" optionKey="id" value="${loadInstance?.loggedBy?.id}"  />

如果我误解了您的问题,请提供更多详情。