`
longgangbai
  • 浏览: 7255114 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

项目开发中struts常用的标签总结

阅读更多

OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。
总的来说JSP页面中的元素<s:property value="xxx"/>,只要在action中有它对应的public Getter即可得到相应的值。

 

在struts2的标签中没有计算一个集合的长度的标签必须使用核心标签中c标签和fn函数标签结合:

如下:备注使用<c:choose>的时候必须使用c:when标签

 <c:choose>
          <c:when test="${requestScope.ticketList != null && fn:length(requestScope.ticketList) > 0}">
      </c:when>
    <c:otherwise>
    </c:otherwise>
 </c:choose>

使用struts2的表里标签如下:注意放在request中的对象必须在request前添加#否则将不会显示

 <s:iterator value="#request.ticketList">
    <s:property value=""/> 用于显示字符串或集合对象中一个对象的一个属性

 </s:iterator>

判断标签的应用:

<s:if test="noticeType==1">
              电话
          </s:if>
          <s:elseif test="noticeType==2">
              短信
          </s:elseif>
          <s:elseif test="noticeType=3">
               邮件
          </s:elseif>
          <s:else>
               无需通知
          </s:else>

 

单选按钮的集合使用如下:

 注意此处使用Map显示默认值为0,显示为价格(#不可以省略哦)

<s:radio name="entity.priorityType" list="#{0:'价格',1:'交通',2:'环境'}" 

value="0" >

</s:radio>              

 

 多项复选框的使用

  <s:checkboxlist name="hotel_Class" onclick="setTicketType('hotel_Class','hotelClass')" list="{'五星','四星','三星','二星','经济型酒店'}" ></s:checkboxlist>
 

文本框的使用:

      <s:textfield name="entity.hotelname" size="30" maxlength="40"></s:textfield>

 

文本域的:

      <s:textarea name="entity.hotelRemark" cols="40" rows="5" ></s:textarea>

 

struts2时间的格式化显示:使用服务端标签和<s:date> 和客户端标签的结合使用

 

        <input type="text" name="entity.startHotelTime" value="<s:date name='entity.startHotelTime' format='yyyy-MM-dd'/>"/>                     
                    

       从request中获取对象

     ActionContext ctx=ActionContext.getContext();
     Map params=ctx.getParameters();

 


Java代码
<s:select label="label" name="name" list="{'name1','name2','name3'}" value="%{'name2'}" />   
 
<s:select label="userList" name="userList" list="userList" listKey="id" listValue="name" /> // userList中为JavaBean   
 
<s:select label="'map'" name="mapList" list="map"/>  

<s:select label="label" name="name" list="{'name1','name2','name3'}" value="%{'name2'}" />

<s:select label="userList" name="userList" list="userList" listKey="id" listValue="name" /> // userList中为JavaBean

<s:select label="'map'" name="mapList" list="map"/> 
选择(select)一个集合的子集(叫做投影),你可以在Collection中使用通配符.

? -所有符合选择逻辑的元素
^ - 符合选择逻辑的第一个元素
$ - 符合选择逻辑的最后一个元素
示例:
JavaBean:
Book.java
private String title;
private String author;
private double price;
Action: private List<Book> bookList;
JSP页面:

<s:iterator value="bookList.{?#this.price > 35}">
      <s:property value="title" /> :<s:property value="price" />
</s:iterator>

Iterator


遍历List

 


Java代码
<s:iterator value="userList" status="status">  
//userList来自Action的public List getUserList()得到,无参的Getter,且修饰符一定为public  
      <s:set name="user"/>  
      <s:property value="name"/>  
      <s:property value="#user.name"/>//来自JSP页面的变量得用#引用  
      <s:property value="top.name"/>  
      <s:property value="top"/>  
      <s:property value="getValue(#user)"/>//getValue为Action中定义的public User getValue(User user)   
</s:iterator> 

<s:iterator value="userList" status="status">
//userList来自Action的public List getUserList()得到,无参的Getter,且修饰符一定为public
      <s:set name="user"/>
      <s:property value="name"/>
      <s:property value="#user.name"/>//来自JSP页面的变量得用#引用
      <s:property value="top.name"/>
      <s:property value="top"/>
      <s:property value="getValue(#user)"/>//getValue为Action中定义的public User getValue(User user)
</s:iterator>

遍历Map


 
1.第一个例子:

<s:select list="{'aa','bb','cc'}" theme="simple" headerKey="00" headerValue="00"></s:select>

2.第二个例子:

<s:select list="#{1:'aa',2:'bb',3:'cc'}"  label="abc" listKey="key" listValue="value"  headerKey="0" headerValue="aabb">

3.第三个例子:

<%HashMap map = new LinkedHashMap();map.put(1,"aaa");map.put(2,"bbb");map.put(3,"ccc");request.setAttribute("map",map);request.setAttribute("aa","2"); %><s:select list="#request.map"  label="abc" listKey="key" listValue="value" value="#request.aa"  headerKey="0" headerValue="aabb"></s:select>

struts2的select标签中,常用的有以下几个属性:

(1)struts2中的select 标签中,必须设置的属性只有一个,即是list。

(2)select标签的list中必须有值,不然会报错。如果没有值,可以加上headerKey, headerValue,这样就可以通过了。如:

xml 代码
<s:select   name="geElement.childType" list="childTypeList" listKey="key" 
listValue="value" headerKey="0" headerValue="--请选择子类型--"/>  
其中,即使list中有值,我们也通常会加上headerKey, headerValue,即列表中显示的第一个选项。注意,headerKey不可以为空,不可以为-1。

(3)list属性:通常是在action中定义的,必须是一个可以迭代的源,如为一个List, Map, Set等。如果是一个Map,那么map的key就对应于select标签中的value,map中的value就对应于select标签中的option。而如果是一个List或者是一个Set,那么可以通过listKey和listValue指定。

(4)listKey和listValue:listKey即对应于select标签中的value, listValue即对应于select标签中的option。

(5)name属性:即是表单中select的名称。

 

 

Java代码
<s:iterator value="map" status="status">  
     <s:property value="key"/>  
     <s:property value="value"/>  
</s:iterator> 

<s:iterator value="map" status="status">
     <s:property value="key"/>
     <s:property value="value"/>
</s:iterator>
例子:


 


Java代码
<s:iterator value="{'a','b','c'}" status="status" >  
      <s:property value="#status.index" />  
      <s:property value="#status.count-1" />  
      <s:property value="top" />-  
      <s:property value="'top'+#status.index+':'+top" />  
</s:iterator> 

<s:iterator value="{'a','b','c'}" status="status" >
      <s:property value="#status.index" />
      <s:property value="#status.count-1" />
      <s:property value="top" />-
      <s:property value="'top'+#status.index+':'+top" />
</s:iterator>

输出:
0 0 a- top0:a
1 1 b- top1:b
2 2 c- top2:c

iterator 中status 的方法:

even : boolean - returns true if the current iteration is even
odd  : boolean - returns true if the current iteration is odd
count : int - returns the count (1 based) of the current iteration
index : int - returns the index (0 based) of the current iteration
first : boolean - returns true if the iterator is on the first iteration
last : boolean - returns true if the iteration is on the last iteration
modulus(operand : int) : int - returns the current count (1 based) modulo the given operand
eg:<s:property value="#stat.modulus(2)" />

IF

 


Java代码
<s:if test="#status.odd">class1</s:if><s:else>class2</s:else>  
<s:if test="type=='Amount'||type==null"> display</s:if>  
//其中type相当<ww:property value="type" />  

 

s:checkboxlist label="包含字段" name="mainKind1.fields" list="#{0 : '标题',1 : '标签',2 : '简介'}"  value="{0,2}"/> 

 <s:checkboxlist label="包含字段" name="mainKind1.fields" list="#{0 : '标题',1 : '标签',2 : '简介'}"  value="{0,2}"/>

这时候 ‘标题’ 和 ‘简介'   被勾中状态, 但  这是静态的 ,不是自动回填 。



                       


   

分享到:
评论

相关推荐

    struts2总结第一章

    Struts2第一章 一、 介绍: a) Struts2是以web work优秀的设计思想为核心,吸收了struts1的部分优点,建立了一个基于...a) 在项目中导入Struts2必需的jar包。 b) 修改web.xml配置文件。 c) 添加struts.xml配置文件。

    Struts原理、开发及项目实施

    怎样把这些技术组合起来,形成一个适应项目需要的稳定架构是项目开发过程中一个非常重要的步骤。 此步骤一般主要由架构设计师完成,设计师将根据项目需求,对J2EE体系中的各处技术进行筛选取舍,并考虑到开发...

    Struts2 学习笔记

    06 项目开发顺序 32 07 声明式异常处理 33 08 国际化 35 一、 国际化资源文件 35 二、 Java国际化 35 三、 Struts2国际化 35 1、 Action级别 35 2、 Package级别 36 3、 Application级别 36 四、 资源文件中的参数...

    Struts2帮助```````

    06 项目开发顺序 32 07 声明式异常处理 33 08 国际化 35 一、 国际化资源文件 35 二、 Java国际化 35 三、 Struts2国际化 35 1、 Action级别 35 2、 Package级别 36 3、 Application级别 36 四、 资源文件中的参数...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    1.2.4 Android移动Web项目开发的三种解决方案:Native, Web和Hybrid优缺陷分析 4 1.2.5国内外应用现状 6 1.2.6 研究现状总结 7 1.3研究目标与内容 7 1.3.1多窗口浏览器模式的实现机制 7 1.3.2跨域交互即缓存处理方法...

    【计算机软件毕业设计】二手车交易平台的分析、设计与实现文献综述1.doc

    摘 要 Web开发技术和Web开发框架整合实践研究是这个时代的一个热点,本文在参阅国内 外Web开发技术和Web开发框架及主要几个框架相关文献的基础上,对Web开发框架研究作 了较为全面的总结和梳理,并结合Web开发框架几...

    Jsp汽车租赁信息管理系统 技术文档.rar

    可以简化每个开发阶段的工作,开发人员可以更加有针对性地分析应用需求,不必重新设计框架,只需在Struct框架的基础上,设计MVC各个模块包含的具体组件,在编码过程中,可以充分利用Struct提供的各种实用类和标签库...

    java三大框架

    框架说白了就是JAVA工作者多年以来总结出的一些开发标准。让我们可以以成功的经验模式来开发我们自已的系统,一般使用框架的好处是 ·在好的框架下,开发者只需要写一些必须的代码;他们不需要直接接触底层的API。 ...

    java-ee电子商城系统课程设计.doc

    Struts 是目前创建Web 应用最常用的表现层MVC 框架实现,基于Model2 的Struts 框架利用控制器和定制标签库将应用中的模型和视图分离,达到了层间松散耦合的效果 ,同时提高系统的灵活性、重用性和维护性。...

    Spring 2.0 开发参考手册

    14.2.3. 帮助简化开发的额外的标签 14.3. Tiles 14.3.1. 需要的资源 14.3.2. 如何集成Tiles 14.4. Velocity和FreeMarker 14.4.1. 需要的资源 14.4.2. Context 配置 14.4.3. 创建模板 14.4.4. 高级配置 ...

    java 面试题 总结

    assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为...

    iuhyiuhkjh908u0980

    在Jcreator中创建的项目,不支持UTF-8编码,缺省GBK. 以下先列出初步的的ant构建文件的代码: build.xml by vb2005xu 2009-06-02 回复 (3) 相关讨论 持续集成简单总结 一、理论篇: 持续集成鼓励尽量短周期内项目团队...

    Spring-Reference_zh_CN(Spring中文参考手册)

    14.2.3. 帮助简化开发的额外的标签 14.3. Tiles 14.3.1. 需要的资源 14.3.2. 如何集成Tiles 14.3.2.1. InternalResourceViewResolver 14.3.2.2. ResourceBundleViewResolver 14.4. Velocity和FreeMarker 14.4.1. ...

    freemarker总结

    JAVA模版引擎Freemarker常用标签(一) 1. if指令 这是一个典型的分支控制指令,该指令的作用完全类似于Java语言中的if,if指令的语法格式如下: &lt;#if condition&gt;... &lt;#elseif condition&gt;... &lt;#elseif condition&gt;......

    Spring中文帮助文档

    14.2.3. 帮助简化开发的额外的标签 14.3. Tiles 14.3.1. 需要的资源 14.3.2. 如何集成Tiles 14.4. Velocity和FreeMarker 14.4.1. 需要的资源 14.4.2. Context 配置 14.4.3. 创建模板 14.4.4. 高级配置 ...

    java面试题及技巧3

    │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...

    Java学习笔记-个人整理的

    {1.3.1}总结}{23}{subsection.1.3.1} {1.4}数据类型}{23}{section.1.4} {1.4.1}整数与浮点数}{23}{subsection.1.4.1} {1.4.1.1}浮点数原理}{24}{subsubsection.1.4.1.1} {1.4.2}格式化输出浮点数}{24}{...

    spring chm文档

    14.2.3. 帮助简化开发的额外的标签 14.3. Tiles 14.3.1. 需要的资源 14.3.2. 如何集成Tiles 14.4. Velocity和FreeMarker 14.4.1. 需要的资源 14.4.2. Context 配置 14.4.3. 创建模板 14.4.4. 高级配置 ...

    Spring API

    14.2.3. 帮助简化开发的额外的标签 14.3. Tiles 14.3.1. 需要的资源 14.3.2. 如何集成Tiles 14.4. Velocity和FreeMarker 14.4.1. 需要的资源 14.4.2. Context 配置 14.4.3. 创建模板 14.4.4. 高级配置 ...

Global site tag (gtag.js) - Google Analytics