提问人:star lord 提问时间:5/30/2023 最后编辑:Roman Cstar lord 更新时间:5/31/2023 访问量:79
org.apache.jasper.JasperException:使用 JSTL c:out 作为 Struts1 的值时,“应有相等的符号” html:checkbox
org.apache.jasper.JasperException: "equal symbol expected" when using JSTL c:out as value of Struts1 html:checkbox
问:
我正在使用 JSTL 和 Struts1,我正在得到
org.apache.jasper.JasperException:“应有相等符号”
与:<html:checkbox>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html"%>
<c:forEach begin="0" end="${response.length() -1}" var="index">
<tr class="" onClick="myFunction('${response.getJSONObject(index).get("TEMPLATE_ID")}', '${response.getJSONObject(index).getString("TEMPLATE_NAME")}')">
<td class="break-word">
<div class="checkbox-inline">
<div class="chkbox icheckbox_minimal hover" id="check_${response.getJSONObject(index).get("TEMPLATE_ID")}" >
<html:checkbox styleClass="iCheck-helper"
style="position: absolute; opacity: 0;"
property="orchTempList"
value="<c:out value='${response.getJSONObject(index).get("TEMPLATE_ID")}'/>" />
<ins class="iCheck-helper"
style="position: absolute; top: 0%; left: 0%; display: block; width: 100%; height: 100%; margin: 0px; padding: 0px; background: rgb(255, 255, 255); border: 0px; opacity: 0;" ></ins>
</div>
${response.getJSONObject(index).getString("TEMPLATE_NAME")}
</div>
</td>
</tr>
</c:forEach>
这里是一个 .${response}
JsonArray
答:
0赞
Dave Newton
5/30/2023
#1
您将 JSTL 标记放在 S1 复选框标记的值内;那行不通。
它必须是 S1 表达式或 JSP EL 表达式。
我会通过两种方式修复它:
- 将数据放在更好的位置
- 不要在 JSP 中全部处理
- 在 Java 端做真正的工作
- 简化视图端
- 使用 JSP EL 访问上述数据
0赞
Roman C
5/31/2023
#2
不能在 Struts 标记的属性中使用 JSTL 标记。但是,只需将代码替换为 JSP EL 表达式即可更改代码。<c:out>
它不相关,但您应该知道,如果您在标记中嵌套双引号,它就会起作用,但 JSP 编辑器可能会显示错误,因此您可以将嵌套双引号替换为单引号。JSP 允许对属性使用单引号。为了更好地解释这个问题,您应该阅读以下问题:由于在 JSP 文件中使用双引号而导致的简单错误。
更改代码:
<html:checkbox styleClass="iCheck-helper"
style="position: absolute; opacity: 0;"
property="orchTempList"
value='${response.getJSONObject(index).get("TEMPLATE_ID")}' />
评论
'
"
div
id="check_${response.getJSONObject(index).get("TEMPLATE_ID")}"
id='check_${response.getJSONObject(index).get("TEMPLATE_ID")}'
TEMPLATE_ID
中可以有引号)。原因如下:它是一个 JSP 页面,因此在浏览器获取要呈现的 HTML 之前会在服务器端进行评估。当客户看到它时,它应该是 ,这应该没问题(带引号的TEMPLATE_ID
值除外)。${response.getJSONObject(index).get("TEMPLATE_ID")}
id="WHATEVER_TEMPLATE_ID_IS"