通常情况下:在进行相关数据操作时(CRUD)时,一般有2种情况可以选择,就是使用Struts2标签或者使用EL标签。
有一点需要注意的是,在JSP页面上,EL标签和OGNL标签不能混在一起乱用。
例如:
在后台中,根据页面传过来的id ,拿到了相关记录的结果集了:
imageMeta = adAssetsService.getImageMetaById(Integer.parseInt(id));
但是,如果在JSP页面上是如此写法:
<td class="td_label">XXXXX:</td>
<td class="td_input">
<input type="text" class="e_input" name="imageMeta.description"/>
</td>
那么在页面上是取不到值的,也就是说,当程序经过了后台逻辑调转到前台JSP页面时,它的相关输入框是空白。如果换成了:
<s:TextField class="e_input" name="imageMeta.description">
在JSP页面上就会现实出于数据库表单想对应的数据
之所以出现如上区别,就是关于EL 和 Struts2标签的区别了。
如果想用EL表达式也显示数据,则应该对其进行相应的修改格式:
<input type="text" class="e_input" value="${imageMeta.description}name="${imageMeta.description}"/>
这样就会在页面上显示对应的值了。
需要注意的是:
其一:在EL标签库中,读取的值必须要放在request中,
它是从request中读取值,在后台中,必须要把整个结果集都放到requers中。
如例子:
imageMeta = adAssetsService.getImageMetaById(Integer.parseInt(id));
request.setAttribute("imageMeta", imageMeta);
只有放在了request中,EL表达式才能在JSP页面中读取出来。
其二:在页面上显示的值,在EL表达式中,它用value=”${XX.XX}”,表示。
如果,写只写一个name=”${XXX.XX}”,它的值也是为空的,
必须有value=””这个属性。
而关于EL中,name属性意思,跟struts2中关于<textfield/>中的name作用是相同的。
所以,在一般情况,要使用html 中的EL表达式,
就应该同时把value=””,和name=”” 同时写上。