2012-02-23 10 views
2

を持っている場合、あなたはこのようにタグに体を渡すことができますチェック:プレイタグが<a href="http://www.playframework.org/documentation/1.2.4/templates#Invoketagbody" rel="nofollow">docs</a>から身体

#{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

は、右のトラックに私を得たが、私は物事を少し再配置しなければならなかった:私は今、私のテンプレートは次のようになり、グルーヴィーなブロックにそれを移動することで回避しました。 –

+0

非常に奇妙なことに、私はそれを試して働いていました...主なものは、とにかくソートされていますか? – mericano1

0

を行いそこでは、基本的にifタグ内_bodyを好きとは思われないことができます。 NULLポインターエラーが発生します。 - 詳細については、私の答えを参照してください

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