2012-02-23 38 views
2

docs,你可以傳遞一個體標籤是這樣的:檢查是否播放標籤有一個體

#{hello}Bob#{/hello} 

和身體可以通過doBody使用:

Hello #{doBody /}! 

但如何你能測試一個身體是否被提供?

我想要做的標籤是這樣的:

#{if hasBody()} 
    #{doBody /} 
#{/if} 
#{else} 
    &{'pages.' + _arg + '.name'} 
#{/else} 

任何想法?

回答

3

如果你想保持你的標籤在HTML /標籤格式,那麼你可以使用這個語法

#{if (s = play.templates.JavaExtensions.toString(_body).trim()) != ''} 
    it has a body! ${s} 
#{/if} 
#{else} 
    no body!!!! 
#{/else} 

你的其他選擇是使用fastTags(見這裏this博客文章)。在那裏,你基本上可以做同樣的事情

public static void _myTag(Map<?, ?> args, Closure body, PrintWriter out, ExecutableTemplate template, int fromLine) { 
    String s = JavaExtensions.toString(body); 
    if (s.trim() != "") { 
    //there is a body 
    } else { 
    // there is no body 
    } 
} 
+0

它讓我在正確的軌道上,但我不得不重新安排事情有點 - 看我爲細節的答案。 – 2012-02-23 20:17:55

+0

很奇怪,我測試過,並且正在工作......主要的是你總是把它分類 – mericano1 2012-02-23 20:25:32

0

它似乎並不喜歡_bodyif標籤內;它會導致一個空指針錯誤。我工作圍繞移動它變成一個時髦塊,所以現在我的模板看起來是這樣的:

%{ 
body = _body == null ? null : play.templates.JavaExtensions.toString(_body).trim(); 
}% 
#{if body} 
    #{doBody /} 
#{/if} 
#{else} 
    ... 
#{/else} 
相關問題