2014-01-27 94 views
0

我有一個複選框,如果某些BigDecimal值大於零,應該檢查該複選框。我嘗試這樣做:Apache Velocity中的BigDecimal比較

<input title="$i18n.tr('foo')" type="checkbox" name="foo.bar" id="foobar" 
#if($foo.bar && $foo.bar.doubleValue() > 0)checked#end/> 

foo是一個POJO和barBigDecimal場)

但無論在什麼bar商店,複選框是選中始終。我試圖以調試它添加onclick事件:

onclick="alert('$foo.bar.doubleValue()');" 

在這裏,我可以看到酒吧的價值是確定的,例如15.0,所以這不是一個價值的問題。

如何將BigDecimal與Velocity模板中的另一個數字進行比較?

+0

這** **應該工作。你有沒有檢查問題不在別的地方?例如,HTML源中是否存在屬性,但瀏覽器錯誤地緩存了該狀態?處理HTML的方式是否放棄屬性,因爲它不是有效的XML?以其他方式調試:打印'$ foo.bar.class',在輸入元素之外以類似的'#if'打印其他內容,另外做兩個'#if',只有一部分條件等。你使用的是哪個版本的Velocity? –

+0

@SergiuDumitriu'$ foo.bar.class'是'類java.math.BigDecimal'。另外,渲染後HTML中沒有'checked'。條件的一部分不起作用。速度版本:1.4 –

+0

並且升級到更高版本的Velocity是不可能的,對吧? –

回答

1

好像有這個問題沒有簡單和優雅的解決方案,所以我剛剛搬到驗證爲Java代碼,並使用它的結果模板布爾變量:

#if($isBar)checked#end 
+0

從技術上講,有一個簡單而優雅的解決方案:從版本1.4升級。不幸的是,你不能那樣做。 :(也就是說,將支票移動到Java是正確的調用!簡單的模板和最新的模板引擎一樣好! –