JSP JSTL SQL странное поведение с, как в MySQL - PullRequest
4 голосов
/ 15 февраля 2011

В 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, это воспроизводимое или моя ошибка здесь ...

Вопрос также размещен здесь и здесь

спасибо

1 Ответ

4 голосов
/ 24 января 2012

Я знаю, что это старый пост, но я тоже столкнулся с этой проблемой. Здесь обсуждается: http://forums.mysql.com/read.php?39,432843,432862#msg-432862

Важно, что на форуме mysql написано

ResultSetMetaData.getColumnName () вернет фактическое имя столбца, , если он существует

Это обеспечивает обходной путь - предотвращает существование имени столбца, поэтому необходимо использовать псевдоним. Например, хранимая процедура оригинального плаката может быть изменена на

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. Я уверен, что большинство типов столбцов имеют похожие решения. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...