在facelets中,如何从密钥为DataType Short的HashMap中获取

时间:2012-05-15 03:30:16

标签: jsf-2 facelets el

我收到一个javax.el.E​​LException:java.lang.Short无法转换为java.lang.Long以获取以下代码:

<ui:param name="aumSegmentType" value="#{segmentSetup.userSegmentTypes[2]}" />

我正在使用Mojarra 2.1,facelets。

1 个答案:

答案 0 :(得分:1)

那是不可能的。数字在EL specification中被视为Long

如果无法更改地图密钥类型,则需要创建一个方法,该方法需要long并将其强制转换为short

public SomeObject getUserSegmentType(long key) {
    return userSegmentTypes.get((short) key);
}

并按如下方式使用

<ui:param ... value="#{segmentSetup.getUserSegmentType(2)}" />

我当然假设您的环境已经支持EL 2.2。鉴于你正在使用JSF 2.1。

请注意,此问题与JSF / Facelets无关。