Struts2的bean标签用于创建一个JavaBean的实例。创建实例时通过<s:param />给JavaBean传入参数。如果通过<s:param />给JavaBean传入属性值则需要给JavaBean设置setter方法,如果需要访问JavaBean的属性则需要设置getter方法。
我们也可以直接调用JavaBean中的方法,也可以给方法传入参数。
我建了一个JavaBean,里面有两个属性man,woman,同时也创建了两个方法,其中一个带参数,代码如下:
package com.iman.model; public class Person { private String man; private String woman; public String getMan() { return man; } public void setMan(String man) { this.man = man; } public String getWoman() { return woman; } public void setWoman(String woman) { this.woman = woman; } public String fromJavaBean(){ return "我来自JavaBean中的方法"; } public String fromJavaBeanParam(String name){ return name+",我是来自JavaBean中的方法"; } }现在开始用<s:bean />标签访问JavaBean,这个标签有两个属性:
Name:这是一个必填的属性,用于指定需要实例化的Java类;
Var:这是一个可选项。如果指定了这个属性,那么JavaBean就会被放入StatckContext,并放入requestScope中。可以用id代替,但是不推荐。
有两种表达方法。一种是把属性值放入值栈中,另一种是放在ActionContext中。我们先看看放入值栈的这种情况,请看我的jsp页面代码:
<%@ page language="java"contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTDHTML 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>存入值栈</title> </head> <body> <s:bean name="com.iman.model.Person" var="person" > <s:param name="man"value="'男人'" /> 我的性别是: <s:property value="man"/><br> </s:bean> </body> </html>由于放入值栈了,所以可以用<s:property />直接访问,本人在此提醒你的是,注意在设置<s:param />标签的value属性时,务必要将你的赋值用单引号括起来,否则取不到值的,我找了这个错还真找了半天。
好了,打开服务器并部署完项目直接运行这个jsp页面,结果如下图所示:
下面我们来看看将值放入ActionContext中的方式,jsp页面如下所示:
<%@ page language="java"contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTDHTML 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>存入ActionContext</title> </head> <body> <s:bean name="com.iman.model.Person" var="person" > <s:param name="woman"value="'女人'"></s:param> </s:bean> 我的性别是:<s:property value="#person.woman"/> </body> </html>
也直接运行这个页面,页面如下所示:
可以看出,得到的都是一样的结果,只是在 ActionConetxt中时需要以“#objectName”的形式取值。
下面我们来看看直接调用JavaBean中的方法这种情况,jsp页面如下所示:
<%@ page language="java"contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTDHTML 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>调用JavaBean中的方法</title> </head> <body> <s:bean name="com.iman.model.Person"var="person"></s:bean> <s:property value="#person.fromJavaBean()"/> </body> </html>
运行页面如下所示:
我们来看看给JavaBean中的方法传入参数的情况,jsp页面如下所示:
<%@ page language="java"contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTDHTML 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>传入参数</title>
</head>
<body>
<s:bean name="com.iman.model.Person" var="person"></s:bean>
<s:property value="#person.fromJavaBeanParam('游其是你')"/>
</body>
</html>
运行结果如下图所示:
本文转自:http://blog.csdn.net/youqishini/article/details/7068472