动态字符串连接结果为 Long

Dynamic string concatenation results in Long

我目前正面临一个奇怪的 JSF 问题,更准确地说是名为 XPages 的残缺 IBM 方言。

基本上我想要的是遍历一个通过 SSJS 设置的数组,因为 EL3 不是 Xpages 中的东西。到目前为止,太糟糕了。

我必须遵循源代码:

<xp:repeat rows="3" value="#{javascript: ['1','2','3']}" var="i">
    <xp:div>
        <xp:text styleClass="columnLabel" value="Bei Zahlung innerhalb von "></xp:text>
        <xp:text value=" Tagen, "/>
        <xp:text style="font-weight: bold" value="#{crmDoc['SKONTO_PZ'+i]}"/>
        <xp:text value=" % Skonto "/>           
        <div class="cleaner4px"></div>
    </xp:div>           
</xp:repeat>

i 的类型是 java.lang.String,但是,在 EL 中我收到以下错误(翻译自德语):

Exception while trying to convert  String "SKONTO_PZ" to type "java.lang.Long" 

部分堆栈跟踪:

com.sun.faces.el.impl.ElException: Ausnahmefehler beim Versuch, String "SKONTO_PZ" in Typ "java.lang.Long" zu konvertieren
com.sun.faces.el.impl.Coercions.coerceToPrimitiveNumber(Coercions.java:536)
com.sun.faces.el.impl.Coercions.applyArithmeticOperator(Coercions.java:832)
com.sun.faces.el.impl.ArithmeticOperator.apply(ArithmeticOperator.java:101)
com.sun.faces.el.impl.BinaryOperatorExpression.evaluate(BinaryOperatorExpression.java:189)
com.sun.faces.el.impl.ArraySuffix.evaluateIndex(ArraySuffix.java:141)
com.sun.faces.el.impl.ArraySuffix.evaluate(ArraySuffix.java:170)
com.sun.faces.el.impl.ComplexValue.evaluate(ComplexValue.java:163)
com.sun.faces.el.impl.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:257)
com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:150)
com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:134)
javax.faces.component.UIOutput.getValue(UIOutput.java:159)
com.ibm.xsp.util.FacesUtil.convertValue(FacesUtil.java:1121)

我只是不明白他到底为什么要把两个字符串加上一个加号当作长。

由于对您的 post 的评论暗示,XPages EL 对此没有真正正确的语法:+ 是加法,然后我认为没有字符串连接操作员。最快的方法是为该绑定切换到 SSJS。

或者,如果您将 xp:div 设为 xp:panel,您可以附加一些 xp:dataContexts 并执行 BalusC 的建议。