`
awfrun
  • 浏览: 82076 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

struts2 Tags 堆栈分析

阅读更多

 1. property: <s:property value="username"/>


 2. property 取值为字符串: <s:property value="'username'"/>


 3.  property 设定默认值: <s:property value="admin" default="管理员"/>


 4. property 设定HTML: <s:property value="'<hr/>'" escape="true"/> 输出 <hr/>

 

 5. set 设定adminName值(默认为request 和 ActionContext): <s:set var="adminName"  value="username" />

set 从request取值: <s:property value="#request.adminName" />
set 从ActionContext取值: <s:property value="#adminName" />

set 设定范围: <s:set var="adminPassword" value="password" scope="session"/>

set 从相应范围取值: <s:property value="#session.adminPassword"/>

说明:set 在以前的版本中有name id,但是在2.1版本开始不推荐使用,用var代替.实际var表示把变量压入栈actioncontext. 官方这样说明var的:Name used to reference the value pushed into the Value Stack;

这样我们可以用#key来访问.

 

6.  bean标签

 <s:bean name="com.awf.tags.Dog"  var="mydog">
    <s:param name="name" value="'pp'"></s:param>
    <s:property value="name"/>
   </s:bean>

 

说明:注意到pp用单引号,因为这时要真正用到String,如果没有加单引号,struts2会默认用OGNL到ValueStack找值.

对于为什么可以<s:property value="name"/>(取到pp)这样取值,可以做个小实验在set标签里加入<s:debug/>,这样你可能看到整个栈数据的出入,此时栈顶当然是mydog对象,这个标签执行完后就可以出栈了,这时action又保持在栈顶了.

此时mydog被存入到actioncontext栈中,所以要取值要用到#号了.

取值:<s:property value="#mydog.name/>

 

7. include标签

 <s:include value="/index.html"></s:include>

这里value的默认处理方式是要内容当做String,不是OGNL,如果这时要用OGNL可以用%,这就是%的实际意义了,其实上面所讲的标签也可以使用%,OGNL对于那些默认使用OGNL的标签会忽略%号,真搞不懂为什么全部都统一,这样我们就不用记这么多了^^,下面是具体使用方法:

<s:set var="incPage" value="%{'/index.html'}" />
 <s:include value="%{#incPage}"></s:include>

 

现在回到include标签,这个标签真的不好用对中文的支持不好,可能有BUG,所以还是用jsp自带的动态包含/静态包含.

 

8. if elseif else标签

定义变量 num= <s:set var="num" value="'100'"/>   set定义的变量存在ActionContext栈中

<s:if test="#num< 0"> 小于0 </s:if>
 <s:elseif test="#num <50"> 小于50 </s:elseif>
  <s:else>大于50</s:else>

 

<s:if test="#parameters.aaa == null">null</s:if>

 

这里说到#parameters不得不提一下,我们在地址栏输入的变量会存在ActionContext栈中,如xx/sdfds.jsp?name=1

这样我们可能用OGNL这样取值#parameters.name ,注意这里取出来的是一个集合,如果你这样访问xx/sdfds.jsp?name=1&name=2,你可以发现可以取出两个值.因为这样所以在写程序时我样最好精确定位像这样#parameters.name[0],就算你能保证只能一个值,也要这样.

 

9. iterator标签,遍历集合

<s:iterator value="{1, 2, 3}" >
   <s:property/>
</s:iterator>

 

自定义变量:

<s:iterator value="{'aaa', 'bbb', 'ccc'}" var="x">
   <s:property value="#x.toUpperCase()"/> |
  </s:iterator>

 

<s:iterator value="{'aaa', 'bbb', 'ccc'}" status="status">
   <s:property/> |
   遍历过的元素总数:<s:property value="#status.count"/> |
   遍历过的元素索引:<s:property value="#status.index"/> |
   当前是偶数?:<s:property value="#status.even"/> |
   当前是奇数?:<s:property value="#status.odd"/> |
   是第一个元素吗?:<s:property value="#status.first"/> |
   是最后一个元素吗?:<s:property value="#status.last"/>
   <br />
  </s:iterator>

 

说明:偶数和其数不是下标,下标0其实是第一个当然是奇数了.

 

遍历map:

<s:iterator value="#{1:'a', 2:'b', 3:'c'}" var="x">
   <s:property value="#x.key"/> | <s:property value="#x.value"/> <br />
  </s:iterator>

 

说明:这里自定义的map要加#号,看下面例子:

<s:set var="m" value="#{1:'oo',2:'kk'}"/>
 <s:property value="#m[1]"/>

 

查了一下官方文档,没找到对map定义的说明,为什么要用到#号?这样定义有什么含义呢?

 

 

分享到:
评论

相关推荐

    struts2 标签库 帮助文档

    Struts 2 标签库(文档手册) Tags-API-CLSW-JSP &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. &lt;s:a href=""&gt;&lt;/s:a&gt;-...

    struts2 tags

    Struts2 是一个流行的 Java web 应用框架,它提供了一套强大的标签库(Taglib),用于简化 JSP 页面中的业务逻辑处理和视图呈现。Struts2 的标签库抽象了不同的表示技术,包括 JSP、FreeMarker 和 Velocity,使得...

    Struts2.3.4 API帮助文档chm格式

    4. **标签库(Tags)**:Struts2提供了一套丰富的JSP标签,简化了视图层的开发。例如s:form、s:textfield、s:submit等,它们对应于HTML表单元素,但提供了更多的功能和灵活性。 5. **配置(Configuration)**:...

    freemaker+struts2

    3. **配置文件**:`struts.xml` 是 Struts2 的核心配置文件,用于定义 Action 映射、结果类型、拦截器堆栈等,它是 Struts2 应用的入口点。 4. **整合 FreeMarker**:在 Struts2 中使用 FreeMarker 作为视图层,...

    struts2标签大全

    在JSP中,我们通常使用`&lt;%@ taglib prefix="s" uri="/struts-tags" %&gt;`来引入Struts2的标签库。下面将详细介绍一些重要的Struts2标签及其功能。 **A. 超链接和Action标签** - `&lt;s:a href=""&gt;&lt;/s:a&gt;`:创建一个...

    struts2的HelloWorld

    Struts2基于拦截器模型,通过一系列拦截器堆栈来处理HTTP请求,这些拦截器负责执行如验证、异常处理、日志记录等任务。它还提供了强大的动作(Action)和结果(Result)机制,使得业务逻辑和视图呈现分离。 在创建...

    Struts_2_标签库(文档手册)_Tags-API-CLSW-JSP

    标题和描述中提到的知识点是关于Struts 2框架中的标签库使用,特别是与JSP相关的部分。Struts 2框架是一种基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,用于构建动态、可扩展的Web应用。其标签...

    struts2的s标签

    Struts2提供了丰富的标签库,其中“S标签”(S-tags)是一种特殊的标签集合,用于简化页面上的数据绑定以及页面逻辑处理。S标签的设计目标是减少对脚本语言(如JSP EL表达式或脚本let)的依赖,并且提高页面的可读性...

    Struts2中使用验证框架的简单例子

    &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; ... ()"&gt; &lt;p&gt;&lt;s:property/&gt; ``` ### 四、Struts2-Validation压缩包内容 在提供的`Struts2-Validation`压缩包中,可能包含以下文件和目录: 1. `struts2-...

    struts2标签说明.pdf

    Struts2的`&lt;s:i18n&gt;`标签用于国际化操作,它可以加载资源包并将其放入值堆栈,使得`&lt;s:text&gt;`等标签能够访问资源包中的信息。例如: ```jsp ``` `&lt;s:include&gt;`标签用于包含其他Servlet或JSP页面的输出,这在页面...

    struts2.0的标签学习资料

    在Struts2.0中,标签不再像Struts1.x那样分为html、bean、logic、tiles等类别,而是统一整合在一个标签库中,只需在JSP页面头部引入 `&lt;%@ taglib prefix="s" uri="/struts-tags" %&gt;` 即可使用。 以下是一些主要的...

    struts2.0的标签库

    Struts2是Apache软件基金会的一个开源项目,作为Struts1的升级版本,它在功能上更为强大且使用起来更加灵活方便。Struts2框架的核心设计思想是MVC(Model-View-Controller)模式的应用,该模式将业务逻辑与用户界面...

    Struts 2.0 标签库简介.doc

    &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; ``` 接下来,我们详细探讨一下Struts 2.0中一些重要的标签及其用法: A. `&lt;s:a&gt;` 和 `&lt;s:action&gt;`: - `&lt;s:a href=""&gt;`: 创建一个超链接,可以结合Action进行跳转,如...

Global site tag (gtag.js) - Google Analytics