2012-07-22 22 views
8

Bir Java yönteminin sonucunu freemarker değişkenine atadığım şu kodum var.NULL döndürecek bir yöntemden nasıl bir değişken atayabilirim?

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

sorun da Java yönteminin belki null bu dönüş değeridir. Ve bu değişken null ben kontrol halde değilse: o Java yöntemi bu istisna ile, null dönerse Hala <#assign ...> satırda çöküyor

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

:

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) 

Ben nasıl Bu istisnayı, ftlimde findSingleBenchmark yöntemini birden çok kez çağırmak zorunda kalmadan kaçının mı?

cevap

10

bu ! (patlama) ile gibi güvenli API'leri işlemek için normal şekilde operatörü:

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

Bu this section of the FreeMarker docs ve the reasoning is given here ayrıntılı olarak açıklanmaktadır.

<td>${singleBenchmark.score!""}</td> 
: snippet'iniz gerçek kod ise


yapmanız (anlamlı) bunu kısalabilir

İlgili konular