Jakarta ee JavaEE JSTL EL长值到字符串类型转换

Jakarta ee JavaEE JSTL EL长值到字符串类型转换,jakarta-ee,jstl,el,Jakarta Ee,Jstl,El,我正在尝试向jstl if标记写入一个条件 <c:forEach var="ledg" items="user_ledgers"> <c:if test="${ledg.transactionID == param['trns']}"> <c:out value="${ledg.name}"/> </c:if> </c:forE

我正在尝试向jstl if标记写入一个条件

        <c:forEach var="ledg" items="user_ledgers">

            <c:if test="${ledg.transactionID == param['trns']}">

                <c:out value="${ledg.name}"/>
            </c:if>
        </c:forEach>
我尝试通过几种方式将transactioID值转换为字符串。但不起作用

弦缩合

<c:if test="${(ledg.transactionID+’’) == param['trns']}">
获取账本

public List<Ledger> getLedgers(User u) {
        List ledgers = new ArrayList<Ledger>();
        try (Connection conn = pool.getConnection()){
            PreparedStatement query = conn.prepareStatement("SELECT * FROM user_ledgers INNER JOIN ledgers ON user_ledgers.l_id = ledgers.id WHERE user_ledgers.u_id=? ORDER BY name ASC;");
            query.setString(1,u.getId()+"");
            ResultSet rs = query.executeQuery();
            while(rs.next()){
                Ledger l = new Ledger();
                l.setId(rs.getLong(4));
                l.setName(rs.getString(5));
                l.setLayout(rs.getString(7));
                l.setTransactionID(rs.getLong(3));
                l.setType(rs.getString(6));
                ledgers.add(l);
            }
        } catch (Exception e) {
            e.printStackTrace();
            ledgers=null;
        }
        return ledgers;
    }
有什么帮助吗?谢谢。

请使用以下选项:

<c:forEach var="ledg" items="${sessionScope.user_ledgers}">
            <c:if test="${ledg.transactionID == param['trns']}">
                <c:out value="${ledg.name}"/>
            </c:if>
  </c:forEach>

如何将user\u ledgers对象传递到JSP中?您收到的异常清楚地表明ledg对象是一个字符串。user_ledgers是一个列表,其中包含一组分类账对象,并作为属性位于会话范围内。发布有关如何执行此操作的代码。这是导致上述错误的代码。javax.el.PropertyNotFoundException:在java.lang.StringNo类型上找不到属性“transactionID”。我已将items=sessionScope.user\u账本替换为items=${sessionScope.user\u账本}。问题是你没有正确阅读列表。它是有效的。非常感谢你。
            LedgerDAO ledg = Data.getLedgerDAO();
            List ledgers = ledg.getLedgers(u);
            session.setAttribute("user_ledgers",ledgers);
public List<Ledger> getLedgers(User u) {
        List ledgers = new ArrayList<Ledger>();
        try (Connection conn = pool.getConnection()){
            PreparedStatement query = conn.prepareStatement("SELECT * FROM user_ledgers INNER JOIN ledgers ON user_ledgers.l_id = ledgers.id WHERE user_ledgers.u_id=? ORDER BY name ASC;");
            query.setString(1,u.getId()+"");
            ResultSet rs = query.executeQuery();
            while(rs.next()){
                Ledger l = new Ledger();
                l.setId(rs.getLong(4));
                l.setName(rs.getString(5));
                l.setLayout(rs.getString(7));
                l.setTransactionID(rs.getLong(3));
                l.setType(rs.getString(6));
                ledgers.add(l);
            }
        } catch (Exception e) {
            e.printStackTrace();
            ledgers=null;
        }
        return ledgers;
    }
<c:forEach var="ledg" items="${sessionScope.user_ledgers}">
            <c:if test="${ledg.transactionID == param['trns']}">
                <c:out value="${ledg.name}"/>
            </c:if>
  </c:forEach>