<%@ taglib uri="/struts-tags" prefix="s"%>
1.
<s:if></s:if>标签对,<s:elseif></s:elseif>标签对,<s:else></s:else>标签对
<s:if test="#user.age < 0">没这年龄</s:if>
<s:elseif test="#user.age < 20">太小</s:elseif>
<s:else>行</s:else>
2.
<s:iterator/></s:iterator>这个标签,可以遍历list,set,map,数组等。
在使用<s:iterator/>标签的时候有三个属性值得我们关注:
1). value属性:可选的属性,value属性是指一个被迭代的集合,使用ognl表达式指定,如果为空的话默认就是ValueStack栈顶的集合.
2).id属性:可选属性, 是指集合元素的id
3).status属性:可选属性,该属性在迭代时会产生一个IteratorStatus对象,该对象可以判断当前元素的位置,包含了以下属性方法:
int getCount(); 迭代元素个数
int getIndex(); 迭代元素当前索引
boolean getFirst(); 是否为第一个
boolean getEven(); 是否为偶
boolean getLast(); 是否最后一个
bolean getOdd(); 是否为奇
遍历 List,数组 篇
<s:iterator value="{'a', 'b', 'c'}">
<s:property />
</s:iterator>
value:放置一个集合,直接把<s:property />嵌进去,它就会遍历出来了。
<s:iterator value="{'a', 'b', 'c'}" var="x">
<s:property value="#x.toUpperCase()" />
</s:iterator>
var:把遍历出来的对象,存放进 var 声明的 key 里,它会被放进 Stack Context,所谓遍历,一般都用这方法。
<s:iterator value="{'a', 'b', 'c'}" status="status">
<s:property value="#status.count" /> <!-- 显示遍历过对象的总数 -->
<s:property value="#status.index" /><!-- 遍历当前对象的索引下标 -->
<s:property value="#status.even" /> <!-- 当前遍历的对象是否为偶数个?注意,不是以 index 为基准,而是以 count 为基准 -->
<s:property value="#status.odd" /><!-- 当前遍历的对象是否为奇数个? -->
<s:property value="#status.first" /><!-- 当前遍历的对象是否为第一个元素?-->
<s:property value="#status.last" /> <!-- 当前遍历的对象是否为最后一个元素? -->
</s:iterator>
遍历 Map 篇
<s:iterator value="#{1:'a', 2:'b', 3:'c'}">
<s:property value="key" /><s:property value="value" /><br />
</s:iterator>
value:这儿是一个 Map,所以用<s:property>可以提出 key 和 value信息。
<s:iterator value="#{1:'a', 2:'b', 3:'c'}" var="user">
<s:property value="#user.key" /><s:property value="#user.value" /><br />
</s:iterator>
3.
<s:subset></s:subset>标签对,这个标签主要是从大集合里获取小集合。
<s:subset source="users" count="5" start="3">
<s:iterator>
<s:property />
</s:iterator>
</s:subset>
source:一个集合
count:截取的总数
start:从哪个下标开始截取
4.
<s:debug />标签
<s:debug />
这个标签是专门用于调试用,它会出现一个 [Debug] 按钮,点击后会显示错误信息,请放在 Error 页面。
5.
<s:property />标签
<s:property value="errors" default="默认值" />
这个标签可以取 Value Stack Contents 和 Stack Context 里的信息,把信息直接显示在页面上,此标签和 OGNL 配合,功能强大。
defalt:如果 value 属性取不到值,就掉用到 default 的值。
<s:property value="<hr />" escape="false" />
escape:默认值为true,会把 value 里的字符串解析,如果设置为 false,就不解析,按照 HTML 原样输出。
<s:property value="'x'" />
有个麻烦事,就是 property 直接输出字符串,而不是把 value 值当成 OGNL,想这么做,就把想要输出的字符串加上单引号吧! '-_-'
6.
<s:text name="login.userName">
<s:param value="userName" />
</s:text>
<s:text>的 name:用于国际化,取出 properties 里对应 key 的 value
7.
<s:param>的 value:用于向 properties 文件内的占位符 {0} 传值,它取的是 Action 内定义好的属性。
8.
<s:fielderror />标签
<s:fielderror fieldName="name" />
fieldName:对应一个继承了 ActionSupport 的类,使用 this.addFieldError("name", "Name is error!"),再在跳转后的页面使用 <s:fielderror> 标签,就可以显示 addFieldError 里的信息。
这个标签自动生成 <li> 代码,但是有替代方案。
<s:property value="fieldErrors.error[0]" />
9.
<s:set /> 标签,往这个标签里放东西,它会把东西放在 Stack Context(也称为ActionContext) 里,还会放在 request 里。纳闷的是,request 也是在 Stack Context 里,而且用 <s:debug /> 还看不到 request 里有这么一个键值对。
<s:set var="name" value="roy" />
var:键
value:值,值得注意的是这个值,会被 <s:property /> 优先当做 OGNL 来取值
上面这个标签的取值方式如下
<s:property value="#name" />
<s:property value="#request.name" />
<s:set var="name" value="roy" scope="page" />
<%=pageContext.getAttribute("name") %>
这种写法,用 #号 就取不到了。
10.
<s:bean></s:bean>标签对
<s:bean var="user" name="com.roy.www.dto.User" />
<s:param name="userName" value="'Roy'" /> <!-- name:对象内的属性;value:赋值,注意加单引号,否则当成 OGNL -->
</s:bean>
var:在 Stack Context 里的键
name:类的完整路径
取值:<s:property value="#user.userName" />
11.
<s:include value="/xxx.html" />
这个标签基本不用,用 <%@include file="/xxx.html" %> 就OK了。
<s:include value="%{#includeKey}" />
如楼上写法,这标签会跑到 Stack Context 里去找值。
分享到:
相关推荐
2. **logic标签库** - `logic:equal`、`logic:notEqual`、`logic:greaterThan`等标签提供了条件判断功能,可以替代JSTL中的条件语句。 - `logic:iterate`用于循环迭代集合,类似于JSTL的`c:forEach`。 - `logic:...
总结,Struts2标签库大大简化了JSP页面的编写,提高了代码的可读性和维护性。通过熟练掌握这些标签,开发者能更好地利用Struts2框架构建高效、稳定的Web应用。学习和理解Struts2标签库详解文档,对于提升Java Web...
### Struts2标签库详解 #### 一、Struts2标签库简介 Struts2框架是一种基于MVC设计模式的企业级应用开发框架,它能够帮助开发者构建高效且可维护的Web应用程序。Struts2框架内置了一个强大的标签库,这些标签不仅...
在Struts2框架中,标签库是一系列预定义的JSP标签,它们提供了丰富的功能,如数据绑定、控制流、输入验证等,帮助开发者创建更加整洁、易于维护的代码。 Struts2标签库主要分为以下几个部分: 1. **核心标签(Core...
### Struts1标签库详解:核心知识点概览 #### Bean Tags: 创建与管理Bean - **bean:cookie**: 此标签用于从客户端请求中提取cookie的值。它根据`name`属性来查找特定的cookie,如果`multiple`属性未设置,则返回一...
总结来说,这个Java分页应用展示了如何利用Struts2框架和其标签库来构建一个简单的留言板系统,涉及到的知识点包括Struts2框架的工作原理、MVC模式、JSP页面的构建、数据库分页查询以及URL参数的处理。对于初学者,...
### Struts2 标签库详解 #### 一、引言 Struts2是一个流行的Java Web框架,它基于MVC(Model-View-Controller)设计模式。为了简化开发过程并提高代码的重用性,Struts2提供了一套丰富的标签库,这些标签库可以帮助...
总结,Struts标签库为Java Web开发者提供了一套强大且便捷的工具,用于构建动态网页。通过熟练掌握和恰当使用这些标签,可以提升开发效率,降低维护成本,同时提高应用的质量和用户体验。在实际项目中,合理利用...
### Struts2 标签库解析 #### 一、引言 Struts2是一个流行的Java Web应用程序框架,它提供了一套强大的工具集用于构建高效、易于维护的企业级应用。Struts2标签库作为该框架的重要组成部分,极大地简化了前端开发...
使用Struts2标签的准备\n\n在使用Struts2标签之前,需要进行以下配置:\n\n- **引入标签库**:在JSP页面顶部添加`<%@ taglib uri="/struts-tags" prefix="s"%>`,声明Struts2的标签库。\n- **配置过滤器**:在`web....
总结,Struts2的标签库是开发人员的得力工具,它提供了丰富的功能,使开发者能够更专注于业务逻辑,而不是繁琐的视图层实现。通过熟练掌握这些标签,可以大大提高开发效率,同时保持代码的清晰和可读性。在实际项目...
### Struts2标签库详解 #### 一、引言 Struts2框架是Apache软件基金会下的一个开源项目,它提供了一种基于MVC设计模式的Web应用开发框架。Struts2框架中的标签库(Tag Library)是其核心功能之一,为开发者提供了...
Struts标签库是Java开发中用于构建MVC框架Struts应用的重要组成部分,它极大地简化了JSP页面中的逻辑处理,让开发者能更专注于视图层的设计。以下是对Struts1.x中常用标签的详细总结: 1. **Bean标签库**: - `...
在Struts2框架中,标签库是其重要组成部分,它提供了丰富的标签来帮助开发者更方便地构建用户界面。`struts2-tags-API`就是这样一个资源,它包含了Struts2标签API的详细文档,帮助开发者理解和使用这些标签。 一、...
Struts2标签库是其强大的视图层工具,简化了JSP页面的编写。例如: 1. `<s:form>`:创建表单,自动绑定Action的属性。 2. `<s:textfield>`:创建输入字段,与Action的属性关联。 3. `<s:submit>`:提交按钮,触发...
总结,Struts2的标签库极大地简化了JSP页面的编写,提高了开发效率。通过深入学习和实践,开发者可以充分利用这些标签来构建出结构清晰、功能强大的Web应用。在实际项目中,结合源码分析和相关开发工具,可以进一步...