Неопределенный тег C: out на троичном операторе - PullRequest
4 голосов
/ 17 августа 2010

Я установил объект области сеанса в моем сеансе, и я хочу добавить отключенный атрибут в одну из моих кнопок, используя тернарный оператор JSTL.

getPermission - это карта привилегий для текущего пользователя входа в систему, но я не уверен, почему я сталкиваюсь с ошибкой unterminated c:out tag в моем JSP при переходе на этот JSP.

<button type="button"  id="addButton" 
    <c:out value="${empty sessionScope.voUserInfo.getPermission.ADD_ITEM ? "disabled='disabled'" : ''}"/> >
    ADD
</button>

1 Ответ

7 голосов
/ 17 августа 2010

Первая двойная кавычка внутри значения слишком рано ломает значение.Вы должны использовать одинарные кавычки только для обозначения строк в EL, а не двойные кавычки.Вы должны использовать двойные кавычки только для обозначения значений атрибутов HTML.

<button id="add" <c:out value="${empty var ? 'disabled="disabled"' : ''}"/>>

(пожалуйста, не обращайте внимания на подсветку синтаксиса кода Stackoverflow, он не распознает правильно taglibs / EL, вышезаконно действителен)

Или, когда вы используете JSP 2.0 или новее, вы можете даже просто оставить это значение c:out, пока не существует риска для XSS (что здесь не так, посколькувы печатаете контролируемое сервером значение).

<button id="add" ${empty var ? 'disabled="disabled"' : ''}>
...