EL 与 ognl 的区别

JavaHelloWorld_1 JavaHelloWorld_1 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
介绍功能背景:SSH框架 ,在JSP中取出session中的List<Map<String,String>> ,然后遍历。并用checkbox控件标记每一行,提交时,把一行中的courseId 提交到Action。

ognl代码:
<s:iterator value="#session['LoadingCourseList']" id="mapList">
<tr>
<td><input name="checkBox" id="checkBox" value="#mapList.get('courseId')" type="checkbox"> </td>

<td><s:property value="#mapList.get('courseId')"/></td>
<td><s:property value="#mapList.get('courseName')"/></td>
<td><s:property value="#mapList.get('teacherName')"/></td>
<td><s:property value="#mapList.get('courseAddress')"/></td>
<td><s:property value="#mapList.get('courseTime')"/></td>
</tr>
</s:iterator>

这样提交的话,生成的_jsp.java文件如下
out.write("\r\n");
out.write("\t\t \t<tr>\r\n");
out.write("\t\t \t\t<td><input name=\"checkBox\" id=\"checkBox\" value=\"#mapList.get('courseId')\" type=\"checkbox\"> </td>\r\n");
out.write("\t\t \t\t\r\n");
out.write("\t\t \t\t<td>");

如此可加,Action中得到的就是 "#mapList.get('courseId')"这个字符串,没有解析

而换成EL则可以解析,并且提交到Action中
jap中代码如下:
<s:iterator value="#session['LoadingCourseList']" id="mapList" var="mapList">
<tr>
<td><input name="checkBox" id="checkBox" value=${mapList.courseId} type="checkbox"> </td>
<td><s:property value="#mapList.get('courseId')"/></td>
<td><s:property value="#mapList.get('courseName')"/></td>
<td><s:property value="#mapList.get('teacherName')"/></td>
<td><s:property value="#mapList.get('courseAddress')"/></td>
<td><s:property value="#mapList.get('courseTime')"/></td>
</tr>
</s:iterator>

生成的_jap.java文件如下
out.write("\r\n");
out.write("\t\t \t<tr>\r\n");
out.write("\t\t \t\t<td><input name=\"checkBox\" id=\"checkBox\" value=");
out.write((java.lang.String) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${mapList.courseId}", java.lang.String.class, (PageContext)_jspx_page_context, null, false));
out.write(" type=\"checkbox\"> </td>\r\n");
out.write("\t\t \t\t\r\n");
out.write("\t\t \t\t<td>");

我想问的是~为什么会出现这种区别,使用ognl这样为什么不能解析呢???求大神解答
...全文
评论 13
收藏 已收藏
分享
返回顶部
JavaHelloWorld_1
Web 开发 81,108 成员 341,721 内容