EL 与 ognl 的区别
介绍功能背景: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这样为什么不能解析呢???求大神解答
免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。