您的位置:首页 > 编程语言 > Java开发

JSTL中EL标签与Struts2中OGNL标签在JSP页面上的区别

2014-10-31 14:04 627 查看
通常情况下:在进行相关数据操作时(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=”” 同时写上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: