Struts2的标签库——数据标签
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2的标签库——数据标签相关的知识,希望对你有一定的参考价值。
Struts2的标签库(四)
——数据标签
1.action标签
该标签用于在jsp页面直接调用一个Action,通过指定executeResult参数,还可以将Action的处理结果包含到此页面中来。此标签的属性如下:
var属性:可选属性,一旦定义了该属性,该Action将被放入Stack Context的栈顶。
name属性:必选属性,通过该属性指定此标签调用哪个Action。
namespace属性:可选属性,通过该属性指定调用Action所在的namespace。
executeResult属性:可选属性,通过该属性指定是否要将Action的处理结果包含到本页面中来,其默认值为false,即不包含。
ignoreContextParams:可选属性,通过该属性指定该页面中的请求参数是否要传入调用的Action。该参数的默认值为false,即将本页面的请求参数传入被调用的Action。
例子:
(1)Action类
import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class NameAction extends ActionSupport{ //封装请求参数 private String username; private String password; //setter、getter方法 public void setUsername(String username){ this.username = username; } public String getUsername(){ return this.username; } public void setPassword(String password){ this.password = password; } public String getPassword(){ return this.password; } //处理请求的逻辑方法 //登陆 public String execute()throws Exception{ if(getUsername().equals("jiagoushi")&& getPassword().equals("jiagoushi")){ //设置session ActionContext context = ActionContext.getContext(); context.getSession().put("username", getUsername()); context.getSession().put("password", getPassword()); return SUCCESS; }else{ return ERROR; } } //注册 public String regist()throws Exception{ if(getUsername()!=""&& getPassword()!=""){ //把请求参数放在session中 ActionContext context = ActionContext.getContext(); //获取request象 context.getSession().put("username", getUsername()); context.getSession().put("password", getPassword()); //返回注册相关的逻辑视图名 return "regist_success"; }else{ return "regist_error"; } } }
(2)配置struts.xml文件
<struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <!-- 设置OGNL表达式可以访问静态方法 --> <constant name="struts.ognl.allowStaticMethodAccess" value="true"/> <package name="package_1" extends="struts-default"> <!-- 把一个Action依据方法拆分成两个Action --> <action name="login" class="myAction.NameAction"> <result>welcome.jsp</result> <result name="error">error.jsp</result> </action> <action name="regist" class="myAction.NameAction" method="regist"> <result name="regist_success">regist_success.jsp</result> <result name="regist_error">regist_error.jsp</result> </action> </package> </struts>
(3)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>index</title> </head> <body> <!-- 使用name为login的action 设置不包含此页面--> 调用action并包含此页面<br/> <s:action name="login" executeResult="true"/><hr/> 将结果包含到此页面,但是阻止请求传入被调用的Action<br/> <s:action name="regist" executeResult="true"/><hr/> </body> </html>
2.bean标签
bean标签用于创建一个JavaBean实例。在创建JavaBean实例时,可以使用该标签的子标签param位该JavaBean实例传入属性值,使用param标签必须为该JavaBean提供对应的setter方法,而如果要访问此JavaBean属性的值时,应当有相应的getter方法。bean标签有如下几个属性:
name属性:必须属性,该属性指定了要实例化的JavaBean的实现类。
var属性:可选属性,指定了该属性后,此实例被放入Stack Context中,并放入requestScope中。
注意:在bean标签的标签体内时,bean标签创建的JavaBean位于ValueStack的顶端;一旦离开此标签体,JavaBean将被移出ValueStack,将无法再次访问此JavaBean实例,除非为此bean标签指定了var,之后可以通过Stack Context访问此JavaBean。
示例:
(1)JavaBean类Student
public class Student { //属性 private String name; private int age; //setter、getter方法 public void setName(String name){ this.name = name; } public String getName(){ return this.name; } public void setAge(int age){ this.age = age; } public int getAge(){ return this.age; } }
(2)使用bean标签创建Student实例,指定属性值,并访问属性值
<%@ 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>bean - test</title> </head> <body> <!-- 使用bean标签创建实例 --> <s:bean name="myJavaBean.Student" var="student_1"> <!-- 传入参数 --> <s:param name="name" value="‘jiagoushi‘"/> <s:param name="age" value="27"/> </s:bean> 姓名:<s:property value="#student_1.name"/><br/> 年龄:<s:property value="#student_1.age"/> </body> </html>
3.date标签
date标签用于格式化输出一个日期,也可以用来计算一个指定日期和当前日期的时间差。date标签有如下几个属性:
format属性:可选属性,如果指定了该属性,将根据属性指定的格式来格式化日期。
nice属性:可选属性,该属性只能为true或者false,它用于指定是否输出指定日期和当前时刻之间的时间差。默认为false,不输出。
name属性:必填属性,指定需要格式化的日期。
var:可选属性,指定该属性后,格式化后的字符串将被放入Stack Context中,并放入requestScope中,但不会在页面中显示出。
注:当同时指定了nice=“true”属性和format属性后,format属性失效。
当没有指定nice="true"也没有指定format属性时,系统会去国际化资源文件中寻找key为struts.date.format的值,将该值当做格式化文本来格式化日期。如果依然没有找到,则默认采用DateFormat.MEDIUM的格式输出。
示例:
<%@ 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>date test</title> </head> <body> <!-- 获取一个Date对象 --> <s:bean name="java.util.Date" var="time"/> <s:date name="#time" nice="false" format="yyyy年MM月dd日"/> </body> </html>
4.debug标签
此标签用于帮助调试,它可以产生一个超链接,通过该链接可以看到Stack Context和ValueStack中的所有的信息。
用法:<s:debug/>
5.include标签
用于将一个JSP页面或者一个Servlet包含到本页面中。它有一个value属性,是个必须属性,指定包含的JSP页面或者Servlet。可以使用param标签为包含页面出入参数值。
6.param标签
该标签用于为其他标签提供参数。在前面使用了好多了。
7.push标签
将某个值放入ValueStack的栈顶,便于访问此值,它有一个value属性是个必须属性,指定了放入ValueStack栈顶的值。
8.set标签
该标签用于把一个值放入指定的范围内,如application,session,request等等。该标签有如下几个属性:
scope属性:可选属性,指定该属性后,把值放入此属性范围中,只能为application,session,reqeust,page或者action这五个之一。
value属性:指定赋给变量的值。如果没有指定,则给位于ValueStack栈顶的值赋给变量。
var属性:可选属性,如果指定了该属性,会把该值放入ValueStack的栈顶。
9.property标签
用于输出指定的值。比较简单。
以上是关于Struts2的标签库——数据标签的主要内容,如果未能解决你的问题,请参考以下文章
[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段