`
ykyfendou
  • 浏览: 407982 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2的 ognl标签使用笔记

阅读更多

1、页面直接输出值:

在页面中打印存放于request范围内的message的值:

 

<s:property value="#request.message"/>

 

 

 2、迭代集合:

迭代(遍历)request范围内的一个listdeptList,获得部门信息,然后遍历每一个部门中的所有的员工集合:empList:

 

<body>
   <table>
      <s:iterator id="dept" value="#request.deptList">
         <tr>
            <td>部门名称</td>

            <td><s:property value="#dept.deptName" /></td>

         </tr>

         <tr>

            <td>所含员工</td>

            <td><s:iterator id="emp" value="#dept.empList">

                   <table>

                      <tr>

                         <td>员工姓名</td>

                         <td><s:property value="#emp.empName" /></td>

                      </tr>

                   </table>

                </s:iterator></td>

         </tr>

      </s:iterator>

   </table>

</body>

  

 

  

3、时间类型格式化输出:

 

 

<s:date name="#request.registDate" format="yyyy-MM-dd HH:mm:ss"/>

 

输出request范围的registDate值,注意,这个registDate变量值的类型必须是时间相关的类型才可以,如date,timedatatime, Timestamp等类型:

 

 

参考:

http://hi.baidu.com/huolanbishou/item/7d9ba8c3a948b7da97445215

 

1.按需输出特定长度的字符

例:<s:property val ="name.s string(0,4)" />,只输出name的前四个字符,其中name是我需要输出的字符串。

 

2.格式化输出日期

例:<s:property val ="%{getText('format.date',{createdDt})}"/>,这里说明一下,'format.date'是输出的日期的格式,这个配置在国际化资源文件中:format.date ={0,date,yyyy-MM-dd } ,其中的格式可以自己配置,createdDt是我要输出的日期。

这种格式化输出日期的方法也适用于别的标签,例如:<s:textfiled/>,也是一种比较通用的方法,另外再提供几种格式:format.time = {0,time}
format.number = {0,number,\#0.0\#\#}
format.percent = {0,number,\#\#0.00'%'}
format.money = {0,number,\¤\#\#0.00}

 

3.带格式的字符串不输出格式(像fckedit之类的编辑器就可以给文本加样式而又想在页面上按原样式输出来而不是输出html标签,此种方式就比较适用)

例:我想输出的title的内容是“<p>测试</p>”,只需加入属性escape="false"就行了:<s:property escape="false" val ="title"/>,这时输出来的就是测试,而不是“<p>测试</p>”。此属性也可以用于别的标签,具体的可以自己摸索。

例子:

<td colspan="8" bgcolor="#FFFFFF">相关报告</td>
</tr>
<tr>
<td colspan="8" bgcolor="#FFFFFF">
<table width="635" cellspacing="1" cellpadding="0" border="0" bgcolor="#9ec7e6">
<tbody>
<s:iterator value="#newslist" id="newsl" status="status">
<tr <s:if test="#status.odd">style="background-color:#ffffff"></s:if>
<s:else>style="background-color:#eeeeee"></s:else>
<td>&nbsp;<s:property value="%{getText('{0,date,yyyy-MM-dd }',{updateTime})}"/></td>--时间直接格式化--
<td>&nbsp;
<s:if test="title.length>20">
<s:property value="title.substring(0,20)"escape="false"/>--截取字符串长度--
</s:if>
<s:else>
<s:property value="title" escape="false"/>
</s:else>
</td>
<td>&nbsp;<s:property value="author"/> </td>
<td>&nbsp;<s:property value="original"/></td>
</tr>
</s:iterator>
</tbody>
</table>
</td>

 

 

 

 

参考:

 

使用<s:date>标签,有一个format属性,就是用来输出指定时间格式的

例如:<s:date name="publishTime" format="yyyy-MM-dd HH:mm:ss" />

<s:date name="birthday" format="yyyy-MM-dd" />

yyyy-MM-dd年月日      HH:mm:ss时分秒

但要注意两个细微的地方,很多人都倒在这上面:

1"yyyy-MM-dd”中的“MM”一定要大写,不然会不起作用或者时间显示不正常

因为在java中,大M表示“月(Month)",而小m表示""(minute)

2、注意的是后面的"HH"表示24小时制,而如果是"hh",则显示时为12小时制

楼主可以自己验证下~~

还有一点:s:date标签使用时,一定要是Date类型。

如果是String型,数值型等其他类型,可以用以下方法:

先在resource文件中定义如下:

format.date_medium={0,date,medium}

format.date_ymd={0,date,yyyy/MM/dd}

format.date_time={0,date,yyyy/MM/dd hh:mm}

然后就可以自由的format了:

<s:text name="format.date_ymd">

    <s:param name="value" value="salesDate"/>

</s:text>

 

 

 

 

 

4、截取字符串:

 

<s:property val ="#request.name.s string(0,4)" />
<s:property value="releaseDate.substring(0,17)" />

 

  

 

5、迭代标签

 

 

 <s:iterator id="user" value="#request.userList">
    <div>
       <font color="black" style="font-size : 13px; font-family : 楷体" > 

           <s:property value="#user.username"/>   

       </font>
    </div>
    <div>

       <font color="black" style="font-size : 13px; font-family : 楷体" > 
           <s:property value="#user.userAge"/>    
       </font>

    </div>

 </s:iterator>

6、迭代集合的时候动态设置divinput等页面对象的id值:

 

在进行数据遍历迭代的时候,我们可能设置遍历中某个div或者其他页面对象的id值,然后通过js来操作当前user对象范围的div或者其他对象的信息,

 

<s:iterator id="user" value="#request.userList">

 

    <div>

       <font color="black" style="font-size : 13px; font-family : 楷体" > 

           <s:property value="#user.username"/>   

       </font>

    </div>

    <div>

       <font color="black" style="font-size : 13px; font-family : 楷体" > 

           <s:property value="#user.userAge"/>    

       </font>

    </div>

    <input type="text" id="input_1" value="aaa">

</s:iterator>

  

 

如,我们需要在js中操作

 

    <input type="text" id="input_1" value="aaa">

 

这个input,我们需要设置这个inputid值,然后在js中通过

document.getElementById()

 

来得到这个input,然后再进行操作。

但是如果我们在遍历的过程中如果把inputid值设置为input_1的话,那么在遍历的时候每遍历一个user,就会相应的产生一个idinput_1input,那么在js中获得idinput_1这个input的时候,获得的就不会是我们要操作的这个input对象了。

 

这时我们就需要动态的生成htmldiv或者input等的id值,如果我们根据遍历中的某些不会重复的信息,来设置这个inputid值的话,那么在js中操作input的时候,就不会因为很多个input都有同一个id值而无法获得我们要操作的input了。

 

 

我们可以把每一个user的主键值得到,然后把这个主键值放在div或者inputid中,由于主键在数据库中是唯一的,那么就可以保证这个id在遍历的时候是不重复的了。

 

我们在设置div或者inputid的时候,不能直接进行字符串的拼装:

 

<input type="text" id="input_${user.userid}" value="aaa">

 

这样的话,页面是无法解析这个id值的,我们需要进行转换一下,把这个user.userid放在一个变量中,然后在这个变量中去取这个值:

 

<s:set name="uid" value="#user.userid"></s:set>  

 

<div id="div_${uid}">this is a div</div>

<input type="text" id="input_${uid}" value="aaa">

  

 

这样,页面在解析的时候就会把uid的值放在div或者inputhtml页面对象的id中,作为id的一部分了。就可以保证每一个id都不是重复的了。

如果有多个html标签需要动态设置id,可以在id前加上一个不同的前缀,就可以保证在一次遍历的时候生成的id值是不同的了,如上面的divinputid设置。

 

如下:我们可以测试一下:

 

<s:iterator id="user" value="#request.userList">
    <div>

       <font color="black" style="font-size : 13px; " > 

           <s:property value="#user.username"/>   

       </font>

    </div>

    <div>

       <font color="black" style="font-size : 13px;" > 

           <s:property value="#user.userAge"/>    

       </font>

    </div>

<s:set name="uid" value="#user.userid"></s:set>  

<div id="div_${uid}">this is a div</div>

<input type="text" id="input_${uid}" value="${uid}">

<a href="JavaScript:outValue('input_${uid}')">outInputValue</a>    

</s:iterator>

<script type="text/javascript">

function outValue(inputId){

   alert(document.getElementById(inputId).value);

}

</script>

测试结果是正确的。

 

分享到:
评论

相关推荐

    struts2 OGNL语言学习笔记

    Struts2 OGNL语言学习笔记 OGNL(Object-Graph Navigation Language)是 Struts 2 中的一种表达式语言,主要用于简化 JSP 页面中的编码,使页面与后台代码分离。下面是 OGNL 语言的主要特点和用法: 1. 支持对象...

    Struts2_OGNL 笔记

    Struts2_OGNL笔记主要关注的是如何在Struts2框架中使用OGNL(Object-Graph Navigation Language)表达式语言。OGNL作为一种强大的表达式语言,常用于Struts2的视图层,允许开发者轻松地访问和操作Java对象的属性。 ...

    struts2 ognl

    Struts2 OGNL是一个关于Java Web开发中的关键知识点,主要涉及到的是Apache Struts2框架与Object-Graph Navigation Language(OGNL)的结合使用。Struts2是一个流行的MVC(模型-视图-控制器)框架,它极大地简化了...

    OGNL学习笔记,包含struts2中ognl的各种用法

    本篇笔记主要介绍了在Struts2中使用OGNL的一些基本用法。 首先,OGNL可以用来获取不同范围内的属性值。在Java Web开发中,有四种常见的作用域:Request、Session、Application和Page。在示例代码中,`&lt;s:property&gt;`...

    struts2 学习重点笔记

    - Struts2 还提供了标签库和 OGNL 表达式语言用于视图层的展示。 **2.4 拦截器(Interceptor)** - **作用**:在业务 Action 执行前后进行一系列的操作,如验证、数据填充等。 - **类型**: - **默认拦截器栈**:...

    struts2四天的学习笔记

    13. ** strut2四天笔记**:这份学习笔记可能涵盖了以上所有知识点,包括如何创建Action,配置struts.xml,使用OGNL表达式,处理异常,以及实践中的各种技巧和最佳实践。 在四天的学习过程中,你应该通过实践和理解...

    struts2学习笔记(完美总结)——转自OPEN经验库

    本文将深入探讨Struts2的核心概念,包括Action、Result、配置文件、OGNL与ValueStack、Tags以及项目中的关键实践。 **一、Action** Action是Struts2中处理业务逻辑的核心组件,它是实现了`...

    struts2学习笔记总结

    本笔记将全面总结Struts2的核心概念、主要功能以及实际开发中的应用。 一、Struts2概述 Struts2是Apache软件基金会下的一个开源项目,它继承了Struts1的优点并解决了其存在的问题,如性能和灵活性。Struts2的核心是...

    struts2课程笔记

    本课程笔记主要涵盖了Struts2的基础概念、核心功能及其工作流程。 首先,Struts2的处理流程是通过一系列的组件协作完成的,包括Filter Dispatcher(过滤器调度器)、Action、Interceptor(拦截器)和Result。当用户...

    struts2综合笔记

    - 学习如何使用 Struts2 提供的各种标签和插件来简化开发工作。 综上所述,Struts2 是一个功能强大且灵活的 MVC 框架,适用于构建复杂的 Web 应用程序。通过深入理解其核心概念和技术细节,开发者能够充分利用 ...

    黑马程序员Struts2笔记

    通过学习这些笔记,开发者将能够理解Struts2的工作原理,并具备使用Struts2开发Web应用的基础能力。同时,对于进一步学习Spring MVC或其他MVC框架也会有所帮助,因为很多设计思想和技术原理都是相通的。

    马士兵Struts2笔记2013

    Struts2是一个流行的Java web框架,...以上就是"马士兵Struts2笔记2013"中涉及的主要知识点,这些内容涵盖了Struts2的基础配置、数据处理、验证、调试以及与视图层的交互等方面,对于理解和掌握Struts2框架非常有帮助。

    北京圣思园Struts2 全套笔记 课件 详解

    5. **OGNL(Object-Graph Navigation Language)**:Struts2内部使用OGNL作为表达式语言,用于在Action与视图之间传递数据。开发者可以使用OGNL表达式在JSP中直接访问Action的属性,简化视图层的开发。 6. **插件...

    黑马程序员_struts2框架2016版视频_struts2_day01笔记

    在使用Struts2框架时,开发者需要导入一系列的jar包。课程中使用的是**struts-2.3.15.3-all.zip**版本的学习资料。其中包含了一些关键的组成部分: - **apps**:提供了示例应用程序,方便快速导入所需的jar包和配置...

    struts2学习笔记.doc

    ### Struts2学习笔记知识点概览 #### 一、环境搭建 **1.1 Struts2简介** - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序...

    Struts1及14. Struts2学习笔记

    在Struts2的学习笔记中,`note.jsp`可能同样用于显示和编辑笔记,但使用的是Struts2的标签库,如`&lt;s:property&gt;`来显示模型对象的属性,以及`s:form`标签创建表单。Struts2允许直接在JSP页面中使用Action的属性,无需...

    Struts2使用笔记

    - **OGNL (Object-Graph Navigation Language)**:Struts2使用OGNL作为表达式语言,用于在Action和视图之间传递数据。 - **Freemarker**:一种模板引擎,用于生成动态HTML或其他格式的输出,常用于Struts2的UI标签...

    传智播客struts2全程学习笔记

    - `freemarker-2.3.x.jar`:Struts2的UI标签的模板使用FreeMarker编写。 - `commons-logging-1.x.x.jar`:ASF出品的日志包,Struts2框架使用这个日志包来支持Log4J和JDK1.4+的日志记录。 - `commons-fileupload-...

    struts2学习笔记

    1.6 Struts2使用步骤 使用Struts2通常包括配置struts.xml文件、创建Action类、编写JSP页面、添加依赖等步骤。 1.7 struts.xml内容详解 struts.xml是Struts2的核心配置文件,定义了Action、结果类型、拦截器等信息...

    struts2笔记

    Struts2不再强制依赖Servlet API,而是使用OGNL(Object-Graph Navigation Language)作为表达式语言,使得数据绑定更加简单。同时,它支持多种视图技术,如JSP、Velocity、FreeMarker等,提高了框架的适应性。 在...

Global site tag (gtag.js) - Google Analytics