如何在Grails中实现动态视图属性

时间:2013-08-29 04:14:39

标签: grails

有人能指出我在Grails中正确功能的正确方向,以在我的视图中实现动态更改属性吗?例如,当域类的实例处于特定工作流步骤中时,我希望某些字段提示,按钮标签和数据修改能力特定于该步骤。我可能会将这些属性存储在另一个域类中,但我不确定如何在执行时应用它们,比如数据实例上的编辑方法。这是自定义标签进来,还是我只是用变量标签替换我的视图中的所有属性,并从控制器传递值?让我入门的搜索词很好。感谢。

2 个答案:

答案 0 :(得分:1)

在控制器操作中,您可以返回模型(Map)。可以在视图中读取此模型中的数据:

class MyController {
  def test() { 
    return [myData: 'hello', myOtherData: 42]
  }
}

在视图中,您可以通过以下方式访问模型:

...
<h1>${ myData }</h1>
<g:if test="${ myOtherData == 42}">
   <p>${ myOtherData }</p>
</g:if>
...

如果要使用控制器中的模型返回另一个视图,可以使用render方法:

render view: 'myview', model: [myData: 42]

有关详细信息,请参阅grails文档中的Models and Views部分。

答案 1 :(得分:0)

感谢您回复@micha。具体来说,我想知道动态改变页面视图方面(视图)的最佳实践是什么。我想通过查看动态支架域中的视图来回答我的问题。例如,字段提示全部采用以下形式:

<label for="last">
   <g:message code="employee.last.label" default="Last" />
</label>

因此,您可以计算控制器/服务中需要的所有提示,或者从数据库中查询它们,并将它们与进入字段的数据一起传递。我只是在检查Grails是否预见到了这种需求,并通过架构的某些特定方面使其变得更容易。