【问题标题】:How to access duplicate column names with JSTL sql:query?如何使用 JSTL sql:query 访问重复的列名?
【发布时间】:2013-01-04 02:38:54
【问题描述】:

由于某种原因,这个

    <sql:query dataSource="${ds}" sql="select user.id, user.name as userName, city, state, country, country.name as countryName, latitude, longitude, ip, last_visit from user, country where user.country = country.id order by last_visit desc limit 100" var="result"/>
    <c:forEach var="col" items="${result.columnNames}">
        ${col}, 
    </c:forEach>

产生

id, name, city, state, country, name, latitude, longitude, ip, last_visit,

这是错误的。我专门重命名了查询中的列。我不知道它是如何找到原始字段名称的。那么如何访问 user.name 的值呢? ${row.userName} 不起作用。

我正在使用 JSTL jstl-1.2.2。

【问题讨论】:

  • 这确实有效,但我对此并不满意:&lt;c:forEach var="rows" items="${result.rowsByIndex}"&gt; ${rows[1]}, ${rows[5]}&lt;br&gt; &lt;/c:forEach&gt;

标签: java sql jsp jstl


【解决方案1】:

不确定这是否会有所帮助,但我了解到使用别名并不总是能正常工作。我见过的一个可能的替代方案:

 <sql:query dataSource="${ds}" sql="select user.id, concat(user.name,'') as userName, city, state, country, concat(country.name,'') as countryName, latitude, longitude, ip, last_visit from user, country where user.country = country.id order by last_visit desc limit 100" var="result"/>
    <c:forEach var="col" items="${result.columnNames}">
        ${col}, 
    </c:forEach>

希望这会有所帮助。祝你好运。

【讨论】:

  • 天才!这一定是个bug!
  • 为什么bug没有解决? Java 非常重要,Java EE 也是如此。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-23
  • 2011-12-24
  • 2019-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多