Struts 2“ param ”标签用于参数化其他标签。 但是,当您声明“ param ”标签时,可以通过两种方式定义“ parameter value ”:
- “ 值 ”属性。
- “ param ”标签的开始和结束之间的文本。
例如,
<param name="fruit">Banana</param> {Case 1}
<param name="fruit" value="Banana"/> {Case 2}
在Struts 2中,两者的行为完全不同。
在“案例1”中,该值被视为java.lang.String对象;
在“情况2”中,该值被视为java.lang.Object对象。
上面的陈述最好用一些例子来说明:
例子1
通过“ param ”标签在bean属性中设置“ String ”值,您必须像这样声明
<s:bean name="com.mkyong.common.Person" var="personBean">
<s:param name="nickName">mkyong</s:param>
</s:bean>
不<s:bean name="com.mkyong.common.Person" var="personBean"> <s:param name="nickName" value="mkyong"></s:param> </s:bean>
如果您在“ value ”属性中声明了“ String ”值,Struts 2只会忽略它。
例子2
通过“ param ”标签将java.lang.Object对象设置为bean属性,声明如下
<s:bean name="com.mkyong.common.Fruit" var="fruitBean">
<s:param name="fruitName">Banana</s:param>
</s:bean>
<s:bean name="com.mkyong.common.Person" var="personBean">
<s:param name="favorFruit" value="#fruitBean"></s:param>
</s:bean>
例子3
对于原始类型,您可以在任何地方随意声明它,它就像一个魅力一样工作。
<s:bean name="com.mkyong.common.Person" var="personBean">
<s:param name="age" value="99"></s:param>
</s:bean>
// or
<s:bean name="com.mkyong.common.Person" var="personBean">
<s:param name="age">99</s:param>
</s:bean>
“ param ”标签不仅可用于bean标签,而且几乎适用于所有其他需要参数化的标签。
Struts 2的“ param ”标记是一个非常令人困惑的标记,许多新的Struts 2开发人员都陷入了这个愚蠢的陷阱,并且想知道为什么简单的“ String”设置方法无效。
希望Struts 2团队将来可以设计出更加用户友好的标签。
Struts 2 param标签示例
完整的Struts 2“ param ”标签示例。
1.行动
用来转发请求的Action类。
ParamTagAction.java
package com.mkyong.common.action;
import com.opensymphony.xwork2.ActionSupport;
public class ParamTagAction extends ActionSupport{
public String execute() {
return SUCCESS;
}
}
2.豆
两个bean,稍后使用“ param ”标签进行初始化。
人.java
package com.mkyong.common;
public class Person{
private String nickName;
private int age;
private Fruit favorFruit;
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Fruit getFavorFruit() {
return favorFruit;
}
public void setFavorFruit(Fruit favorFruit) {
this.favorFruit = favorFruit;
}
public String getFruitName(){
return this.favorFruit.getFruitName();
}
}
水果.java
package com.mkyong.common;
public class Fruit{
private String fruitName;
public String getFruitName() {
return fruitName;
}
public void setFruitName(String fruitName) {
this.fruitName = fruitName;
}
}
3. param标签示例
一个JSP页面,显示“ param ”标记的用法。
param.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
</head>
<body>
<h1>Struts 2 param tag example</h1>
<s:bean name="com.mkyong.common.Fruit" var="fruitBean">
<s:param name="fruitName">Banana</s:param>
</s:bean>
<s:bean name="com.mkyong.common.Person" var="personBean">
<s:param name="nickName">ah pig ah dog</s:param>
<s:param name="age">99</s:param>
<s:param name="favorFruit" value="#fruitBean"></s:param>
</s:bean>
<h2>PersonBean</h2>
<ol>
<li>NickName property : <s:property value="#personBean.nickName" /></li>
<li>Age property : <s:property value="#personBean.age" /></li>
<li>Fruit property : <s:property value="#personBean.fruitName" /></li>
</ol>
</body>
</html>
4. 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.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<action name="paramTagAction"
class="com.mkyong.common.action.ParamTagAction" >
<result name="success">pages/param.jsp</result>
</action>
</package>
</struts>
5.演示
http:// localhost:8080 / Struts2Example / paramTagAction.action
输出量
参考
标签: struts2