JavaEE JSTL EL Long 值到 String 类型转换
JavaEE JSTL EL Long value to String type casting
我正在尝试将条件写入 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>
Ledg 是 ledger class 的一个对象,transactionID 是一个 long 类型的字段。
我在运行时发现了这个错误。
javax.el.PropertyNotFoundException: Property 'transactionID' not found on type java.lang.String
我尝试通过多种方式将 transactioID 值转换为字符串。但不工作
字符串连接
<c:if test="${(ledg.transactionID+’’) == param['trns']}">
使用自定义标签
<c:set var="equals" scope="page">
<z:doTheyEquals v1="${ledg.transactionID}" v2="${param['trns']}"/>
</c:set>
它还需要 String 类型。
将user_ledges设置为会话范围
LedgerDAO ledg = Data.getLedgerDAO();
List ledgers = ledg.getLedgers(u);
session.setAttribute("user_ledgers",ledgers);
getLedgers()
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>
我正在尝试将条件写入 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>
Ledg 是 ledger class 的一个对象,transactionID 是一个 long 类型的字段。
我在运行时发现了这个错误。
javax.el.PropertyNotFoundException: Property 'transactionID' not found on type java.lang.String
我尝试通过多种方式将 transactioID 值转换为字符串。但不工作
字符串连接
<c:if test="${(ledg.transactionID+’’) == param['trns']}">
使用自定义标签
<c:set var="equals" scope="page">
<z:doTheyEquals v1="${ledg.transactionID}" v2="${param['trns']}"/>
</c:set>
它还需要 String 类型。
将user_ledges设置为会话范围
LedgerDAO ledg = Data.getLedgerDAO();
List ledgers = ledg.getLedgers(u);
session.setAttribute("user_ledgers",ledgers);
getLedgers()
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>