2012-07-22 13 views
8

मेरे पास निम्न कोड है जहां मैं एक जावा विधि का परिणाम एक फ्रीमार्कर चर के लिए असाइन करता हूं।मैं एक वैरिएबल को एक विधि से कैसे आवंटित कर सकता हूं जो शून्य हो सकता है?

<#assign singleBenchmark = solverBenchmark.findSingleBenchmark(problemBenchmark)> 

समस्या यह है कि जावा विधि हो सकता है null की कि वापसी मान है। और भले ही मैं जाँच करता है, तो उस चर null नहीं है:

<#if !singleBenchmark??> 
    <td></td> 
<#else> 
    <td>${singleBenchmark.score}</td> 
</#if> 

यह अभी भी <#assign ...> लाइन पर दुर्घटनाओं अगर है कि जावा विधि null देता है, इस अपवाद के साथ:

freemarker.core.InvalidReferenceException: Error on line 109, column 45 in index.html.ftl 
solverBenchmark.findSingleBenchmark(problemBenchmark) is undefined. 
It cannot be assigned to singleBenchmark 
    at freemarker.core.Assignment.accept(Assignment.java:111) 

मैं कैसे कर सकता है मेरे एफटीएल में findSingleBenchmark विधि को कई बार कॉल किए बिना इस अपवाद से बचें?

उत्तर

10

असुरक्षित एपीआई को संभालने के लिए की तरह इस ! (बैंग) के साथ है सामान्य तरीके से ऑपरेटर:

<#assign singleBenchmark = solverBenchmark.findSingleBenchmark(problemBenchmark)!> 

यह this section of the FreeMarker docs और the reasoning is given here में विस्तृत है।

<td>${singleBenchmark.score!""}</td> 
:


अपने टुकड़ा वास्तविक कोड है, तो आप इसे (काफी) करने के लिए कम हो सकता है

संबंधित मुद्दे

 संबंधित मुद्दे