在mysql中我有一个存储过程,其中包含一个sql:select firstname as i_firstname , lastname as i_lastname from roleuser where user_id = uid ;我使用jstl代码来获取值: – sql:query var=comm_codes dataSour...
![](https://oss.womengda.net/imgfile/2310/1ER05UTX60-1Z51.jpg)
在mysql中我有一个存储过程,其中包含一个sql:
select firstname as i_firstname , lastname as i_lastname from roleuser
where user_id = uid ;
我使用jstl代码来获取值: –
<sql:query var="comm_codes" dataSource="jdbc/myDatasource">
call sp_select_username(?);
<sql:param>${user_id}</sql:param>
</sql:query>
<c:forEach var="rows" items="${comm_codes.rows}">
${rows.i_firstname} ${rows.i_lastname}
</c:forEach>
但是这个代码不返回任何东西,但是当用${rows.firstname}替换上面的代码${rows.i_firstname}时,我得到了正确的值.
jstl有什么问题,这是可复制的还是我的错…
问题还发布在here和here
谢谢
解决方法:
我知道这是一个老帖子,但我也遇到了这个问题.这里讨论:http://forums.mysql.com/read.php?39,432843,432862#msg-432862
重要的是,mysql论坛中的海报说明
ResultSetMetaData.getColumnName() will return the actual name of the column, if it exists
这提供了一种解决方法 – 防止列名存在,因此必须使用别名.例如,原始海报的存储过程可以修改为
select concat(first name,'') as i_firstname ,
concat(lastname,'') as i_lastname from roleuser
where user_id = uid ;
在这种情况下,原始列现在是未知的,并使用别名.我已经在类似的情况下在我的系统上对它进行了测试.同样,如果需要为int使用别名,可以尝试SELECT(id 0)AS id_alias.我敢肯定大多数列类型都有类似的解决方案.希望这可以帮助.
本文标题为:java – jsp jstl sql与mysql中的奇怪行为
![](/xwassets/images/pre.png)
![](/xwassets/images/next.png)
- Java聊天室之实现接收和发送Socket 2023-06-17
- web开发中添加数据源实现思路 2023-08-02
- Java实战玩具商城的前台与后台实现流程 2023-08-10
- Spring JdbcTemplate执行数据库操作详解 2023-06-16
- Java实现手写自旋锁的示例代码 2023-04-17
- Spring Boot详解创建和运行基础流程 2023-01-18
- Java实现优先队列式广度优先搜索算法的示例代码 2022-09-03
- Java中Range函数的简单介绍 2023-03-15
- Java利用布隆过滤器实现快速检查元素是否存在 2023-06-23
- Java 多线程并发ReentrantLock 2023-01-13