未终止的C:三元运算符上的标记

Mar*_*ada 4 jsp servlets jstl el

我在会话中设置了一个会话范围对象,我想使用JSTL Ternary运算符在我的一个按钮中添加一个禁用属性.

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>
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 7

价值中的第一个双引号是太早破坏价值.您应该仅使用单引号来表示EL中的字符串,而不是双引号.您应该仅使用双引号来表示HTML属性值.

<button id="add" <c:out value="${empty var ? 'disabled="disabled"' : ''}"/>>
Run Code Online (Sandbox Code Playgroud)

(请不要注意Stackoverflow代码语法高亮显示,它不能正确识别taglibs/EL,以上是合法有效的)

或者,当您使用JSP 2.0或更新版本时,c:out只要没有XSS风险,您甚至可以放弃它(由于您打印的是服务器控制的值,因此不是这种情况).

<button id="add" ${empty var ? 'disabled="disabled"' : ''}>
Run Code Online (Sandbox Code Playgroud)