2011-11-30 55 views
2

我在GSP视图域对象的列表,并想检查其中是否有特定类型的:检查,如果目标是某种类型的GSP

Class Equipment {} 
Class Loader extends Equipment {} 

......鉴于:

<g:each in="${Equipment.list()}" var="e"> 
    ... check if e is a Loader.... 
</g:each> 

我试图做检查,如果GSP片段建立一个导航菜单,并怀疑这甚至合适的地方做的检查。

+0

我会在控制器里做这样的检查,并呈现不同的部分模板的子类型,自己 –

回答

9

如果你正在做的逻辑在像这样的GSP综合体你应该考虑creati改为使用taglib。它也很容易测试 - GSP需要通过功能测试和运行的Web服务器进行测试,但是您可以使用集成测试来测试taglibs。

+0

喜伯特,不是一个聪明的屁股,但是是什么让那么复杂? – ubiquibacon

+2

这是一个判断电话,但我的选择是不要做比GSP循环更多的事情。如果我最终做了任何逻辑,我将把它移动到一个taglib。 GSP应该非常笨,只是呈现HTML。 –

5

你可以试试:

<g:each in="${Equipment.list()}" var="e"> 
    <g:if test="${e instanceof your.package.Loader}">Do anything</g:if> 
</g:each> 
相关问题