struts2 标签的使用
Struts2中实现自定义标签很简单,主要分为3步:
1.创建taglib文件(.tld),编写标签声明。
2.编写自定义标签类。
3.在页面中使用标签。
下面以一个自定义的分页标签为例,进行说明。
其实,开发自定义标签并不需要Struts2的支持,一般情况下,只需要继承javax.servlet.jsp.tagext.BodyTagSupport类,重写doStartTag,doEndTag等方法即可。这里在实现自定义标签时,继承的2个类分别是org.apache.struts2.views.jsp.ComponentTagSupport和org.apache.struts2.components.Component,ComponentTagSupport实际上是对BodyTagSupport的一次封装,看一下ComponentTagSupport类的继承关系就明了了:
Java代码
1. java.lang.Object
2. extended by javax.servlet.jsp.tagext.TagSupport
3. extended by javax.servlet.jsp.tagext.BodyTagSupport
4. extended by org.apache.struts2.views.jsp.StrutsBodyTagSupport
5. extended by org.apache.struts2.views.jsp.ComponentTagSupport
继承ComponentTagSupport类是为了获得标签中的属性值,并包装成Component对象。继承Component类是为了从Struts2中的ValueStack中获得相对应的值。
1. 创建taglib文件.microblog.tld 文件: (是否在其他配置文件中引用??项目自动找寻tld文件??)
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>microblog tags</short-name>
<uri>/microblog-tags</uri>
<display-name>microblog taglib</display-name>
<!-- 页面头部用户信息 -->
<tag>
<name>headuserinfo</name>
<tag-class>com.people.t.web.tag.HeadUserInfoTag</tag-class>
<body-content>empty</body-content>
<!-- 也可以只用以上部分,attrubute看情况 -->
<attribute>
<name>userIdVar</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue> //表示该自定义标签的某属性的值可以直接指定或者通过动态计算指定
</attribute>
<attribute>
<name>defaultUserIdVar</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>indexVar</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
2. 编写自定义标签类:HeadUserInfoTag.java类:
//ComponentTagSupport为struts2包中的类
public class HeadUserInfoTag extends ComponentTagSupport {
private String userIdVar;
private String defaultUserIdVar;
private String indexVar;
@Override
public Component getBean(ValueStack stack, HttpServletRequest request, HttpServletResponse response) {
return new HeadUserInfo(stack, request, response);
}
@Override
protected void populateParams() {
super.populateParams();
HeadUserInfo headInfo = (HeadUserInfo)component;
// component 为继承类中的参数。
headInfo.setUserIdVar(userIdVar);
headInfo.setDefaultUserIdVar(defaultUserIdVar);
headInfo.setIndexVar(indexVar);
}
//省略getter,setter方法。
}
3。编写自定义标签类:HeadUserInfo.java类:
//Component为struts2包中的类
public class HeadUserInfo extends Component {
private String userIdVar;
private String defaultUserIdVar;
private String indexVar;
//request,response必须
private HttpServletRequest request;
private HttpServletResponse response;
public HeadUserInfo(ValueStack stack, HttpServletRequest request, HttpServletResponse response) {
super(stack);
this.request = request;
this.response = response;
}
@Override
public boolean end(Writer writer, String body) {
StringBuilder html = new StringBuilder();
String contextPath = request.getContextPath();
try{
//获得数据
Integer userId = (Integer)stack.findValue(userIdVar);
Integer defaultUserId = (Integer)stack.findValue(defaultUserIdVar);
Integer index = (Integer)stack.findValue(indexVar);
//逻辑。。。。
//组织到变量html中,最后输出此string
writer.write(html.toString());
}catch(Exception e){
logger.error("页面头部用户信息" + e.getMessage());
}
return true;
}
//省略getter,setter方法。
}
4. 在页面中使用标签:jsp中使用
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="m" uri="/microblog-tags"%>
直接使用:<m:headuserinfo userIdVar="userId" defaultUserIdVar="cookieUid" indexVar="index"/>
分享到:
相关推荐
在压缩包中的"example"文件可能包含了一个或多个使用Struts2标签的实际示例,可以参考这些示例来理解和学习Struts2标签的用法。通过实践,你会更好地掌握这些标签的功能和用法,从而在开发过程中更加得心应手。
`struts2标签用法.doc`和`标签详解`文件可能包含更深入的标签用法和实例,例如如何使用`s:form`创建表单,如何利用`s:action`执行Action,以及如何使用`s:debug`标签进行调试等。 5. **Struts2标签的高级用法** -...
Struts2 标签使用方法 Struts2 标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,Struts2 的主题、模板都提供了很好的扩展性。Struts2 允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂...
本篇文章将深入探讨Struts2的标签使用及其背后的机制。 1. **Struts2 标签库概述** - Struts2的标签库分为核心标签库和主题标签库,核心标签库提供基本的控制流、数据展示和表单处理功能,而主题标签库则用于美化...
### Struts2 标签库概述 Struts2框架提供了丰富的标签库,这些标签不仅可以简化JSP页面的开发,还能增强页面的表现力和功能性。与Struts1相比,Struts2不再采用繁琐的标签分类方式,而是根据标签的用途进行区分。...
除了预定义的标签外,Struts2还允许开发者自定义标签,这需要创建一个继承自`org.apache.struts2.views.jsp.TagSupport`的Java类,并在JSP页面中使用`<s:tag>`进行调用。 五、标签库的扩展性 Struts2的标签库不仅...
本文将深入探讨Struts2的标签使用,主要分为以下几个部分: 1. **标签库介绍** Struts2的标签库包括核心标签库、展示标签库、逻辑标签库等。核心标签库提供基本的控制结构,如迭代、条件判断等;展示标签库主要...
在深入探讨Struts2标签库的使用之前,我们先对Struts2框架有一个基本的认识。Struts2是Apache Software Foundation下的一个开源项目,它继承了Struts1的优点,并在此基础上进行了大量的改进,使得Web开发更加高效、...
在这里有20多个struts2标签的使用例子,大家可以下载看看。
下面,我们将详细介绍 Struts2 标签库的使用。 4.1 通用标签 通用标签用来控制页面的执行过程,并从 Action 或值堆栈中取得数据。这些标签可以分为控制标签、数据标签和其他标签。 控制标签用来控制程序的执行,...
Struts 2 标签的使用注意事项 Struts 2 是一个基于MVC架构的Java Web应用程序框架,它提供了一系列的标签来简化Web开发。然而,在使用Struts 2标签时,需要注意一些重要的事项。 首先,在使用Struts 2标签之前,...
在Struts2标签库中,还有许多其他的标签,如、、等,每个标签都有其特定的使用场景和应用。 Struts2标签库提供了一系列的标签,帮助开发者快速构建Web应用程序,并提高了开发效率。但是,为了充分发挥Struts2标签库...
Struts2标签库的组成 Struts2框架的标签库可以分为以下三类: 用户界面标签(UI标签):主要用来生成HTML元素的标签。 表单标签:主要用于生成HTML页面的FORM元素,以及普通表单元素的标签。 非表单标签:主要用于生成...
3. 使用`s:submit`标签提交表单,Struts2会自动将表单数据封装到Action中。 4. 在Action的execute方法中处理业务逻辑,然后返回一个结果,比如"success"。 5. 在视图层,可以使用`s:property`标签显示Action返回的...
通过熟练掌握Struts2标签的使用,开发者可以更高效地构建动态网页,同时享受到Struts2框架带来的便利和灵活性。提供的“Struts2标签详解.doc”文档将对这些概念进行详细的解释,是深入学习和理解Struts2标签的重要...