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

来源:互联网 发布:ssh管理系统源码 编辑:程序博客网 时间:2024/05/19 02:29

 通常情况下:在进行相关数据操作时(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=”” 同时写上。



  

0 0
原创粉丝点击