【问题标题】:JSTL - Cast Error String to LongJSTL - 将错误字符串转换为长
【发布时间】:2015-03-11 11:56:42
【问题描述】:

我正在尝试使用 JSTL 与值进行比较,但我遇到了这个错误。

评估自定义操作属性“值”时出错 带有值“${item.ruleValues.size}”:“。”提供了操作员 将“java.lang.String”类型的索引值应用于列表 或数组,但该值不能转换为整数。 (空)

这是具体的代码行 -

<c:set var="nElCol" value="0" scope="page"/>
<c:forEach var="elem" items="${item.ruleValues}" varStatus="status">
    <c:set var="size" value="${item.ruleValues.size}" scope="page" />
    <c:set var="nElCol" value="${nElCol + 1}" scope="page"/>

    <c:if test="${size == (nElCol-1)}">
        <TD align="center" width="110">
            <input id='<c:out value="${count}" />' type="text" name="fname" value='<c:out value="${elem}"/>'> 
        </TD>   
        <TD align="center" width="110">
            <img src="/XA-IME-PF/public/img/Plus.jpg" alt="add" width="10" height="10"/>
        </TD>
    </c:if> 
</c:forEach>

item 对象就是这个:

public class BoElementToPrint implements Serializable{

    private List ruleValues; 

    /**
     * @return
     */
    public List getRuleValues() {
        return ruleValues;
    }

    /**
     * @param list
     */
    public void setRuleValues(List list) {
        ruleValues = list;
    }
}

ruleValues 是一个字符串列表。

【问题讨论】:

  • 应该是&lt;c:set var="size" value="${item.ruleValues.size}" scope="page" /&gt;
  • 好的,我发现另一个错误:评估自定义操作属性“value”时发生错误,值为“${item.ruleValues.size}”:“。”为运算符提供了“java.lang.String”类型的索引值以应用于列表或数组,但该值无法转换为整数。 (null)

标签: java jsp casting jstl


【解决方案1】:

您必须使用 JSTL 函数 taglib,以评估 List 的大小。 . 运算符仅用于引用 bean 属性或哈希映射键。

所以,你必须先导入标签库:

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>

然后更改size定义:

<c:set var="size" value="${fn:length(item.ruleValues)}" scope="page" />

【讨论】:

【解决方案2】:

在更新的 EL 版本中,我相信您可以简单地执行以下操作:

${item.ruleValues.size()} 

即。 append() 否则 EL 解析器将寻找方法 getSize();

看这里:

https://stackoverflow.com/tags/el/info

调用非 getter 方法

自 EL 2.2 起,作为 Servlet 3.0 / JSP 2.2 的一部分进行维护 (Tomcat 7、Glassfish 3、JBoss AS 6 等),可以调用 非 getter 方法,如有必要,带参数。

例如

${bean.find(param.id)} 与

公共的东西找到(字符串ID){ 返回 someService.find(id); } 会调用 request.getParameter("id") 作为参数的方法。

【讨论】:

    猜你喜欢
    • 2014-06-15
    • 2016-03-03
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多