Struts2 <s:param>標籤示例
Struts2 <s: param > 標籤被用來參數化其他標籤。 但是,當稱明<s:param>標籤,「參數值」可以有兩種定義方式:
- 「value」 屬性
 - param標籤的開始和結束之間的文本
 
例如,
Banana {Case 1} {Case 2}在Struts2中,都是表現一個完全不同的意義。 在「Case 1」中, 值被認爲是一個java.lang.String對象; 而在「Case 2」中, 值被認爲是一個 java.lang.Object 對象。
上述聲明用一些例子很好地說明:
示例1
通過「param」標籤設置「字符串」值轉換到 bean屬性,必須這樣聲明
<s:bean name="com.yiibai.common.Person" var="personBean">
    <s:param name="nickName">yiibai
而不是
<s:bean name="com.yiibai.common.Person" var="personBean">
    <s:param name="nickName" value="yiibai">
如果你聲明「字符串」的值在「value」屬性中,Struts2 會忽略它。
示例2
通過<s:param>標籤設置 java.lang.Object 對象轉換成 bean 屬性,這樣聲明
<s:bean name="com.yiibai.common.Fruit" var="fruitBean">
    <s:param name="fruitName">Banana
<s:bean name="com.yiibai.common.Person" var="personBean">
    <s:param name="favorFruit" value="#fruitBean">
示例3
對於基本類型,可以自由地在任何位置聲明它。
<s:bean name="com.yiibai.common.Person" var="personBean">
    <s:param name="age" value="99">
// or
<s:bean name="com.yiibai.common.Person" var="personBean">
    <s:param name="age">99
 
<s:param>標籤不僅是可用於bean標籤,它幾乎適用於所有需要參數化的標籤。
在Struts 2,<s:param>標籤是一個非常混亂的標籤,許多新的Struts2開發人員都可能會掉進這個陷阱,但不知道爲什麼一個簡單的「字符串」的setter方法是不行的。希望 Struts2 的團隊能夠在今後設計更加人性化的標籤。
Struts2 <s:param>標籤示例
一個完整的Struts2 <s:param>標籤的例子。
1. 動作
Action類轉發請求。
ParamTagAction.java
package com.yiibai.common.action;
import com.opensymphony.xwork2.ActionSupport;
public class ParamTagAction extends ActionSupport{
public String execute() {
    return SUCCESS;
}
}
2. Bean
兩個Bean對象初始化在「param」標籤之後。
Person.java
package com.yiibai.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.yiibai.common;
public class Fruit{
private String fruitName;
public String getFruitName() {
    return fruitName;
}
public void setFruitName(String fruitName) {
    this.fruitName = fruitName;
}
}
3. <s:param>標籤示例
JSP頁面顯示如何使用<s:param>標籤。
param.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
 
Struts 2 param tag example
<s:bean name="com.yiibai.common.Fruit" var="fruitBean">
    <s:param name="fruitName">Banana
<s:bean name="com.yiibai.common.Person" var="personBean">
    <s:param name="nickName">ah pig ah dog
    <s:param name="age">99
    <s:param name="favorFruit" value="#fruitBean">
PersonBean
- NickName property : 
 - Age property : 
 - Fruit property : 
 
4. struts.xml
    <action name="paramTagAction" 
        class="com.yiibai.common.action.ParamTagAction" >
        <result name="success">pages/param.jsp</result>
    </action>
</package>
5. 示例
http://localhost:8080/struts2paramtag/paramTagAction.action
在瀏覽中打上面的網址,訪問後顯示結果如下: