如何动态地将属性添加到GSP页面中的body元素

时间:2014-06-23 19:01:28

标签: grails gsp

在Grails 2.3.7中,有没有办法在GSP页面中使用表达式向body元素添加属性?在下面的代码中,p元素中的表达式有效,但body元素中的相同表达式会导致错误:期待' ='在属性名称之后($ {raw(' this =" that"')})。

<!DOCTYPE html>
<html>
    <head>
        <title>Test</title>
    </head>
   <body ${raw('this="that"')}>
        <p ${raw('this="that"')}>Hello!</p>
    </body>
</html>

我尝试在布局中执行此操作,并使用pageProperty从原始页面中选取相应的属性,但在页面布局中body元素上出现相同的错误好。

替换属性值确实适用于body这样的元素:

<body this="${that}">

但这不会起作用,因为如果没有值,我根本不希望该属性出现。

1 个答案:

答案 0 :(得分:3)

问题是,body标签被<g:layoutBody />标签取代,因此无法像这样设置。

一种解决方案是用于在sitemesh布局中设置不同的内容。 示例here

<html>
<head>
    <g:layoutHead/>
</head>
<body class="${pageProperty( name:'body.class' )}">
    <g:layoutBody/>
</body>
</html>