Unterminated C:out标记在三元运算符

问题描述:

我在会话中设置了一个会话作用域对象,并且想要使用JSTL三元运算符在我的按钮 之一中添加禁用的属性。Unterminated C:out标记在三元运算符

getPermission是当前登录用户的权限映射,但我不确定为什么我遇到错误 当JSP发送到我的JSP中时,终止了c:out标记。

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

有任何建议吗?

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

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

(请不要注意代码#1语法高亮,它不能识别标签库/ EL正确的,上面是合法有效的)

或者,当你在JSP 2.0或更新版本,只要没有XSS风险(因为您打印的是服务器控制的值,因此这里不是这种情况),您甚至可以将c:out离开。

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

感谢BalusC ...顺便说一下,我想我已经看了一篇文章,关于流的Servlet之前,我忘了链接,但我不知道,如果你是作家......伟大的链接!我学到了很多... – 2010-08-20 02:05:25

+0

也许[this](http://balusc.blogspot.com/2007/07/fileservlet.html)或[this](http://balusc.blogspot.com/2009/02 /fileservlet-supporting-resume-and.html)?别客气 :) – BalusC 2010-08-20 02:32:28