ダウンロードする – リンク://wp-content/uploads/2010/07/Struts2-Param-Tag-Example.zip[Struts2-Param-Tag-Example.zip]
Struts 2 ”
param
“タグは、他のタグをパラメータ化するために使用されます。ただし、 ”
param
“タグを宣言した場合、 ”
パラメータ値
“は次の2つの方法で定義できます。
-
”
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クラス。
package com.mkyong.common.action; import com.opensymphony.xwork2.ActionSupport; public class ParamTagAction extends ActionSupport{ public String execute() { return SUCCESS; } }
2.ビーンズ
2つのBeanは後で ”
param
“タグで初期化します。
-
Person.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(); } }
-
Fruit.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タグの例
”
param
“タグの使用を示すJSPページ。
-
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>