2016-04-13 14 views
0

私はFreemarkerを使用してLiferayアプリケーション表示テンプレートを構築しています。テンプレートは、ループを使用してエンティティの集合(ジャーナル記事)を反復処理します。テンプレートは、タイプの日付と時間のいくつかの変数を使用します。これらの変数をリセットするか、ループの各反復で「空」をチェックするにはどうすればよいですか?Freemarkerの時間変数にNULLまたは "空"の値を割り当てる方法は?

我々はループ内でこのコードを持っているとしましょう、それは「starthourは」ループの一部Interationsに空になる場合があります:私は0にSTARTTIME設定している。この例では

<#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='start_hour']") /> 
<#assign starthour = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim /> 
<#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='start_minutes']") /> 
<#assign startminutes = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim /> 
<#if starthour!=""> 
    <#assign startTimeString= starthour +":"+startminutes> 
    <#assign starttime = startTimeString?time["HH:mm"]> 
<#else> 
<#assign starttime = 0> 
</#if> 

が、 starthourが空のときに空のStringとして設定しようとしました。

私はすでに「空」変数をチェックするためにこれらの方法を試してみました:変数は一度私のループで設定された後

<#if (starttime >0) > 
<#if starttime.has_content> 
<#if starttime!=""> 

私は

<#if starttime??> 

を確認することができません。私はLiferayの中で私のスクリプトを使用するとき、私はいつも、このようなエラーを取得してみてくださいどのような:

The only legal comparisons are between two numbers, two strings, or two dates. 
Left hand operand is a freemarker.template.SimpleDate 
Right hand operand is a freemarker.template.SimpleNumber 

それでは、どのように私は時間変数を「リセット」または「空」、それのための価値、そしてどうかを確認する方法を設定してください空の(しかしNullではない)時間値?

答えて

0

値を設定解除することはできません(可能であれば、読み込みは高いスコープに戻ってしまいます。後でそのような変数がデータモデルに現れると、後でバグが発生する可能性があります)。したがって、ブール型の変数startTimeSetを導入するか、特別な空の値を選択する必要があります。時間の値に "自然な"空の値がないので、""を使用してから何もする前に、?has_contentの値をチェックしてください。

関連する問題