Action:
package com.struts2.tag.exer.web.actions;
import com.opensymphony.xwork2.ActionSupport;
public class TagAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1096330019952553956L;
public String append(){
return SUCCESS;
}
public String generator(){
return SUCCESS;
}
public String merge(){
return SUCCESS;
}
}
struts.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
<package name="tag" extends="struts-default" >
<action name="*" class="com.struts2.tag.exer.web.actions.TagAction" method="{1}">
<result name="success">/pages/{1}.jsp</result>
</action>
</package>
</struts>
index.jsp:
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Tag Navigation Page</title>
</head>
<body>
<form action="#">
<table>
<s:generator separator="," val="'append,generator,merge'">
<s:iterator>
<tr><td><li><a href="<s:property/>.action"><s:property/></a></li></td></tr>
</s:iterator>
</s:generator>
</table>
</form>
</body>
</html>
append.jsp:
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head><title>append</title></head>
<body>
<!-- map append map -->
<s:append id="newMap">
<s:param value="#{'Oracle reference':'Jackey','Spring in Action':'Tommy','Hibernate':'John'}"/>
<s:param value="#{'Struts in Action':'Mike','JavaScrpit':'Marry'}"/>
</s:append>
<!-- map append list -->
<s:append id="newList">
<!-- map -->
<s:param value="#{'Oracle reference':'Jackey','Spring in Action':'Tommy','Hibernate':'John'}"/>
<!-- list -->
<s:param value="#{'AJAX in Action','MyBatis'}"/>
</s:append>
<table border="1" width="200">
<tr>
<td>Book Name</td>
<td>Author</td>
</tr>
<s:iterator value="#newMap" status="st">
<tr <s:if test="#st.odd">style="background-color:#bbbbbb"</s:if>>
<td><s:property value="key"/></td>
<td><s:property value="value"/></td>
</tr>
</s:iterator>
</table>
<table border="1" width="200">
<tr>
<td>Book Name</td>
<td>Author</td>
</tr>
<s:iterator value="#newList" status="st">
<tr <s:if test="#st.odd">style="background-color:#cccccc"</s:if>>
<td><s:property value="key"/></td>
<td><s:property value="value"/></td>
</tr>
</s:iterator>
</table>
</body>
</html>
generator.jsp:
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page import="java.util.*,com.opensymphony.xwork2.util.*" %>
<html>
<head><title>generator</title></head>
<body>
<table border="1" width="200">
<tr>
<td>Book Name</td>
<td>Author</td>
</tr>
<s:generator separator="," val="'Oracle reference,Spring in Action,Hibernate,MyBatis'">
<s:iterator status="st">
<tr <s:if test="#st.odd">style="background-color:#bbbbbb"</s:if>>
<td><s:property/></td>
</tr>
</s:iterator>
</s:generator>
</table>
<%-- count属性限定了元素的数量 id属性将生成的集合放入了valueStack中--%>
<s:generator separator="," val="'Oracle reference,Spring in Action,Hibernate,MyBatis'" id="books" count="4"/>
<table border="1" width="200">
<tr>
<td>Book Name</td>
<td>Author</td>
</tr>
<%--
ValueStack vs = (ValueStack)request.getAttribute("struts.valueStack");
java.util.Iterator<String> iterator= (java.util.Iterator<String>)vs.findValue("books");
if(iterator!=null){
while(iterator.hasNext()){
String book = (String)iterator.next();
--%>
<!--
<tr>
<td>
-->
<%--=book--%>
<!--
</td>
</tr>
-->
<%--
}
}
--%>
<s:iterator value="#books">
<tr>
<td><s:property/></td>
</tr>
</s:iterator>
</table>
</body>
</html>
merge.jsp
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head><title>merge</title></head>
<body>
<!-- map merge map -->
<s:merge id="mergeMap">
<s:param value="#{'Oracle reference':'Jackey','Spring in Action':'Tommy','Hibernate':'John'}"/>
<s:param value="#{'Struts in Action':'Mike','JavaScrpit':'Marry'}"/>
</s:merge>
<!-- map append map -->
<s:append id="appendMap">
<s:param value="#{'Oracle reference':'Jackey','Spring in Action':'Tommy','Hibernate':'John'}"/>
<s:param value="#{'Struts in Action':'Mike','JavaScrpit':'Marry'}"/>
</s:append>
<table border="1" width="200">
<tr>
<td colspan="2">Merge</td>
</tr>
<tr>
<td>Book Name</td>
<td>Author</td>
</tr>
<s:iterator value="#mergeMap" status="st">
<tr <s:if test="#st.odd">style="background-color:#bbbbbb"</s:if>>
<td><s:property value="key"/></td>
<td><s:property value="value"/></td>
</tr>
</s:iterator>
</table>
<table border="1" width="200">
<tr>
<td colspan="2">Append</td>
</tr>
<tr>
<td>Book Name</td>
<td>Author</td>
</tr>
<s:iterator value="#appendMap" status="st">
<tr <s:if test="#st.odd">style="background-color:#bbbbbb"</s:if>>
<td><s:property value="key"/></td>
<td><s:property value="value"/></td>
</tr>
</s:iterator>
</table>
</body>
</html>
分享到:
相关推荐
Struts2框架提供了丰富的标签库,包括控制流标签、数据展示标签等,这些标签在MVC模式中扮演着视图的角色,帮助我们构建动态、响应式的Web应用。 Struts2标签库主要分为以下几个部分: 1. **控制流标签**: - `s:...
在Struts2框架中,标签库是其一大特色,它提供了丰富的自定义标签,使得开发者能够更加便捷地创建动态页面。这些标签极大地简化了JSP页面的编写,提高了代码的可读性和可维护性。 1. **Struts2核心标签库**: - `s...
Struts2 提供了一个强大的标签库,用于简化 Web 应用程序的开发过程。这些标签可以分为两类:通用标签和 UI 标签。下面,我们将详细介绍 Struts2 标签库的使用。 4.1 通用标签 通用标签用来控制页面的执行过程,并...
Struts2标签库是Struts2框架中的一个重要组件,它提供了一系列的标签,帮助开发者快速构建Web应用程序。在Struts2标签库中,标签可以分为UI标签和非UI标签两大类。UI标签用于生成HTML控件,如文本框、列表框、复选框...
Struts 2 是一个基于MVC架构的Java Web应用程序框架,它提供了一系列的标签来简化Web开发。然而,在使用Struts 2标签时,需要注意一些重要的事项。 首先,在使用Struts 2标签之前,需要在web.xml文件中配置Struts 2...
在Struts2框架中,标签库是一系列预定义的JSP标签,它们提供了丰富的功能,如数据绑定、控制流、输入验证等,帮助开发者创建更加整洁、易于维护的代码。 Struts2标签库主要分为以下几个部分: 1. **核心标签(Core...
总的来说,Struts2标签和API文档为开发者提供了一种简洁、高效的方式来处理用户界面和业务逻辑的交互,是开发Java Web应用的重要工具。通过深入学习和熟练掌握,可以显著提升开发效率和代码质量。
在Struts2中,标签库是其核心特性之一,它提供了一系列预定义的JSP标签,用于简化视图层的编码,提高代码的可读性和可维护性。下面我们将详细探讨Struts2标签的使用方法以及EL(Expression Language)表达式。 1. *...
一、Struts2自定义标签的概念 自定义标签是JSP的一种扩展,允许开发者创建自己的HTML标签,这些标签可以封装复杂的业务逻辑,使得视图层更加简洁。在Struts2中,自定义标签通常由Action类和结果页面共同完成,提供了...
Struts2是一个基于MVC(Model-View-Controller)设计模式的Java web开发框架,它极大地简化了构建可维护和可扩展的web应用程序的过程。Tiles库则是Struts2中的一个强大的视图管理组件,用于组织和重用页面布局。本文...
在Struts2中,使用了一系列的标签库来增强JSP页面的功能,使得开发者可以更方便地实现业务逻辑与视图的分离,提高代码的可读性和可维护性。本篇文章将详细介绍Struts2中的各种标签及其应用。 1. **s:form标签**:这...
总结起来,这个Struts2实例项目通过整合国际化、类型转换和Struts2标签,构建了一个完整的用户管理系统,展示了如何在实际开发中高效地处理Web请求,实现业务逻辑,并提供多语言支持。这样的练习有助于提升开发者对...
Struts2是一个强大的MVC框架,它提供了丰富的标签库,使得开发者在编写JSP页面时能够更加方便地处理业务逻辑和展示数据。本篇文章主要关注Struts2中的常用标签,这些标签大大简化了Web开发中的一些常见任务。 首先...
4. **创建分页标签库**:Struts2支持自定义标签,你可以创建一个`.tld`文件来定义分页标签。标签库应该包含开始、结束、上一页、下一页等标签,以便在视图层中方便地使用。 5. **实现标签处理类**:对应的Java类...
Struts2的标签库是基于JSP标准标签库(JSTL)扩展的,提供了一系列用于简化视图层开发的标签。这些标签帮助开发者避免直接编写Java脚本和HTML混合代码,提高代码的可读性和可维护性。 2. **Action标签** Action...