gpt4 book ai didi

java - jsp jSTL sql 与 mysql 中一样的奇怪行为

转载 作者:可可西里 更新时间:2023-11-01 07:33:40 25 4
gpt4 key购买 nike

在 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.i_firstname} 替换为 ${rows.firstname} 时,我得到了正确的值。

jSTL 有什么问题吗,这是可复制的还是我的错...

问题也发布了herehere

谢谢

最佳答案

我知道这是一个旧帖子,但我也遇到了这个问题。在这里讨论: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 中一样的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4998749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com