【问题标题】:String value for c:set throws NumberFormatExceptionc:set 的字符串值抛出 NumberFormatException
【发布时间】:2012-05-04 23:26:58
【问题描述】:

我想用下面的代码在 JSF 中生成一张图片的 URL...

<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 不接受字符串值是真的吗?


顺便说一句,当我使用参数时,例如

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

一切都很好,但是 URL 不正确。


我的 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

【问题讨论】:

  • 如果将字符串值放在开始标签和结束标签之间会发生什么:&lt;c:set var="image"&gt;image.png&lt;/c:set&gt;?
  • 然后我得到一个 NullPointerException。

标签: jsf jstl


【解决方案1】:

我会用纯JSF来解决这个问题

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

【讨论】:

  • 谢谢,但问题是,会有更多的条件,我想逐步建立最终的链接。因此,我从image 开始,如果需要,添加1,如果下一个条件适用,则添加_1,依此类推。最后我添加.png,URL可以和图片标签一起使用。
  • 那么您是在使用逻辑来构建图像名称吗?为什么不在 ManagedBean 中构建它,然后只检索图像的名称?
  • 因为我认为图像名称是 MVC 中视图的一部分,不应该是托管 bean 的一部分。我已经考虑过实现我自己的 EL-tag,这样我就可以打电话给#{myTag:imageUrl(param1, param2)}(不确定这是否可能)。
猜你喜欢
  • 1970-01-01
  • 2011-01-28
  • 2012-02-05
  • 2013-03-29
  • 2020-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-06
相关资源
最近更新 更多