一、在structs.xml中配置

<structs>
<package name="tagp" namespace="/test" extends="struts-default">
<action name="TagDemo" class="cn.hjp.test.TagDemo">
<result name="success" type="dispatcher">/tag/Index2.jsp</result>
</action>
</package>
</structs>

二、首页Index.jsp页面代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<span style="color:red">生日日期格式:yyyy/MM/dd</span>
<s:form action="TagDemo" namespace="/test">
<s:textfield name="name" label="姓名"></s:textfield>
<s:textfield name="sex" label="性别"></s:textfield>
<s:textfield name="age" label="年龄"></s:textfield>
<s:textfield name="birthday" label="生日"></s:textfield>
<s:submit value="提交"></s:submit>
</s:form>
</body>
</html>

三、Action代码(注意要引用对包):

如果想实现下面的自动装配,必须这样生成属性setter和getter

public class TagDemo extends ActionSupport {

    private String name;
private char sex;
private int age;
private Date birthday; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public char getSex() {
return sex;
} public void setSex(char sex) {
this.sex = sex;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public Date getBirthday() {
return birthday;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
} @Override
public String execute() throws Exception {
// TODO Auto-generated method stub
System.out.println(this.toString());
return SUCCESS;
} @Override
public String toString() {
return "TagDemo [name=" + name + ", sex=" + sex + ", age=" + age + ", birthday=" + birthday + "]";
} }

四、自定义的转换器类(注意引用对包):

public class MyDateConverter extends DefaultTypeConverter {

    @Override
public Object convertValue(Object value, Class toType) {
// TODO Auto-generated method stub
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd");
if (toType == Date.class) {
String[] params = (String[]) value;
try {
return simpleDateFormat.parse(params[0]);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (toType == String.class) {
Date date = (Date) value;
return simpleDateFormat.format(date);
}
throw new RuntimeException("错误");
}
}

五、下面就是配置如何使用自定义的转换器类,分两种:

1、如果只想对某个包下Action里的字段进行格式化,就要在这个包下(和action类同级)新建properties文件,依据上面示例则要建文件TagDemo-conversion.properties

代码:birthday=cn.hjp.test.MyDateConverter

2、如果要对所有时间类型格式化,则要在src根下新建文件xwork-conversion.properties

代码:java.util.Date=cn.hjp.test.MyDateConverter

六、action返回的页面,如果实现页面值的自动加载,也要使用structs标签,Index2.jsp页面代码如下,

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:textfield name="name" label="姓名"></s:textfield>
<s:textfield name="sex" label="性别"></s:textfield>
<s:textfield name="age" label="年龄"></s:textfield>
<s:textfield name="birthday" label="生日"></s:textfield>
</body>
</html>

structs2标签简单实用,及自定义转换器示例代码的更多相关文章

  1. 简单实用的php分页函数代码

    一个简单实用的php分页函数,分页导航中可以默认为空,在函数内部再设置本页URL. 代码: <?php /** * 分页 * @category 功能 * @param $totle:信息总数 ...

  2. Android FlycoDialog 简单实用的自定义Android弹窗对话框之Dialog篇

    效果图镇楼   FlycoDialog是一款非常棒的弹窗对话框处理框架,今天在这里主要讲一下他的自定义弹出对话框的功能,这里以第二幅效果图为例,图片已经放在博客最下方,X号自己随便找一个东西代替吧.  ...

  3. C#邮件发送类 简单实用 可自定义发件人名称

    上图看效果 MailHelper: public class MailHelper { public bool SendMail(MailSender sender,out string errorM ...

  4. 百度EasyDL文本分类自定义API示例代码 python

    因为需要将命名实体中的组织机构名进一步区分为政府.企业.社会组织等,在easydl上做了一个文本分类模型,但是要用这个接口时候发现, 官方文档中竟然还在用urllib2的库,且不完整.好多地方会报错, ...

  5. 最简单实用的JQuery实现banner图中的text打字动画效果!!!

    下面,就让小博详细介绍如何实现上面GIF实现的banner图中的文字动画效果,最简单实用的方法(鉴于代码量较小,就内嵌在一个HTML文件中了): 首先,我们要在header导入一个jQuery,并新建 ...

  6. 基于Bootstrap简单实用的tags标签插件

    http://www.htmleaf.com/jQuery/ jQuery之家 自由分享jQuery.html5和css3的插件库 基于Bootstrap简单实用的tags标签插件

  7. 一个简单的jsp自定义标签

    学到了一个简单的jsp自定义标签,后面有更多的例子,会更新出来: 例子1: 步骤: 1.编写标签实现类: 继承javax.servlet.jsp.tagext.SimpleTagSupport; 重写 ...

  8. JSP自定义标签——简单标签(2)

    在前一篇博客中,我们已经学习了自定义的简单标签的基本使用方法,这一篇我们来学习如何在简单标签中添加标签属性.对自定义标签添加一些属性,可以使我们的标签功能更加灵活和复用.例如前一篇博客使用简单标签来对 ...

  9. JSP自定义标签——简单标签(1)

    前面一篇博客介绍了自定义标签的传统标签使用方式,但是我们会发现,使用传统标签非常的麻烦,而且接口还多,现在传统标签基本都没用了,除了一些比较久的框架.Sun公司之后推出了一个新的标签使用方式,称之为简 ...

随机推荐

  1. Unity小知识

    这些是我在开发时遇到的一些问题: 2D的碰撞器和3D的碰撞器是没有任何物理反应的,必须是2D对2D,3D对3D 碰撞器Collision包含触发物体的速度等信息,触发器没有

  2. php基础09:提取表单数据

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. jquery 删除字符串最后一个字符的方法

    字符串:var s = "1,2,3,4,5," 目标:删除最后一个 "," 方法: s=s.substring(0,s.Length-1): 字符串:var ...

  4. 在C#代码中应用Log4Net 中配置文件的解释

    一个完整的配置文件的例子如下所示,这个是”在C#代码中应用Log4Net(二)”中使用的配置文件. <log4net> <!-- 错误日志类--> <logger nam ...

  5. 我所知道的HttpContext.Current

    在MVC中,HttpContext.Current是比较常见的对象,可以用它来进行Session,Cache等的保存等.但是它并不是无处不在的,下面就慢慢来揭开它的面纱. 当我们向服务端发送请求的时候 ...

  6. 一款Android开源的下拉刷新动画

    无意间在GitHub看到的,就Down了下来.但是作者是用AndroidStudio开发的,这边移动Eclipse供小伙伴们下载使用. 截图 这么好的东西因为字数不够不让分享,得了,贴段代码吧 pac ...

  7. SpringMVC实现上传和下载

    摘要 有些下载的错误解决来 java.lang.IllegalStateException: getOutputStream() has already been called for this re ...

  8. 20135326、20135303-linux实验一实验报告

    北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全系统设计基础  班级:1353 姓名:王亦可 .魏昊卿 学号:20135326.20135303 成绩:       ...

  9. C#基础之垃圾回收

    1.托管资源的回收 我们都知道C#托管资源的回收由GC全权负责控制,可是什么时候GC会回收垃圾呢?一般出现以下情况会回收垃圾:手动调用GC.Collect()强制回收:第0代对象内存已满:应用程序域被 ...

  10. 【微收藏】来自Twitter的自动文字补齐jQuery插件 - Typeahead.js

    没图没逼格 事发有因 该插件可以结合本地数据进行一些操作.推荐关注一下H5的几种数据存储的方式(localstorage与sessionstorage.IndexedDB.离线缓存manifest文件 ...