2012-05-04 46 views
0

我想生成與下面的代碼JSF的圖像網址...字符串值:set拋出NumberFormatException的

<c:choose> 
    <c:when test="#{cc.attrs.index == 0}"> 
     <c:set var="image" value="image.png" /> 
    </c:when> 
    <c:otherwise> 
     <c:set var="image" value="image1.png" /> 
    </c:otherwise> 
</c:choose> 

<img src="#{image}" /> 

但是當我運行它,我得到一個NumberFormatException異常:

java.lang.NumberFormatException: For input string: "image.png" 
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1241) 
    at java.lang.Double.valueOf(Double.java:504) 
    at com.sun.el.lang.ELArithmetic$DoubleDelegate.coerce(ELArithmetic.java:148) 
    at com.sun.el.lang.ELArithmetic.coerce(ELArithmetic.java:373) 
    at com.sun.el.lang.ELArithmetic.add(ELArithmetic.java:254) 
    at com.sun.el.parser.AstPlus.getValue(AstPlus.java:57) 
    at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:206) 
    at org.apache.myfaces.view.facelets.el.ELText$ELTextVariable.toString(ELText.java:208) 
    at org.apache.myfaces.view.facelets.el.ELText$ELTextComposite.toString(ELText.java:140) 
    ... 

所以,現在我的問題:這是真的,c:set不接受字符串值?


BTW,當我使用的參數,例如

 <c:set var="image" value="#{cc.attrs.index}" /> 

一切都很好,但好,網址是不正確的。


我的Maven依賴:

  • org.apache.myfaces.core.myfaces-API 2.1.7
  • org.apache.myfaces.core.myfaces-IMPL 2.1.7
  • javax.el.el-API 2.2
+0

如果將字符串值置於開始標記和結束標記之間,會發生什麼情況:' image.png'? –

+0

然後我得到一個NullPointerException。 –

回答

0

我會用純JSF來解決這個問題

<h:graphicImage value="#{(cc.attrs.index eq 0)? 'image.png' : 'image1.png' }" /> 
+0

謝謝,但事情是,會有更多的條件,我想逐步建立最終的鏈接。所以,我從'image'開始,如果需要添加'1',如果下一個條件適用,則添加'_1'等等。最後我添加'.png',URL可以和圖片標籤一起使用。 –

+0

因此,您正在使用邏輯來構建圖像名稱?爲什麼不在ManagedBean中構建它,然後只檢索圖像的名稱? –

+0

因爲我認爲圖像名稱是MVC視圖的一部分,不應該是託管bean的一部分。我已經考慮過實現我自己的EL標籤,以便我可以調用'#{myTag:imageUrl(param1,param2)}'(不知道這是否可能)。 –

相關問題