struts2标簽庫常用标簽詳解
struts2标簽主要分兩種:
注意:标簽的屬性可以被指派為一個靜态的值或一個 OGNL 表達式. 如果在指派時使用了一個 OGNL 表達式并把它用 %{} 括起來, 這個表達式将會被求值.
1.通用标簽庫(控制标簽、資料标簽):
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX0UFROVTQE9UNNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TO1QTNxEjM0EzMycDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
2.表單标簽庫
<s:property> 将OGNL表達式的内容輸出到頁面
- value屬性,接受OGNL表達式從值棧取值
- default屬性,顯示預設值,如果當OGNL表達式沒有擷取到值,default設定顯示預設值
- escapeHtml屬性,是否對HTML标簽轉義輸出(預設是不轉義true,可以關閉)
例如:action代碼:
package com.cszy.action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class TagAction1 extends ActionSupport{
@Override
public String execute() throws Exception {
ActionContext.getContext().put("name", "admin");
ActionContext.getContext().put("table", "<table ><tr><td>html的代碼</td></tr></table>");
return SUCCESS;
}
}
jsp代碼:
<h3>使用s:property擷取值棧内容</h3>
<s:property value="name"/>
<h3>s:property default屬性</h3>
<s:property value="#age" default="0"/>
<h3>s:property escapeHtml屬性,是否對html标簽轉義,預設不轉義(true)</h3>
<s:property value="#table" escapeHtml="false"/>
頁面效果:
<s:iterator>通過s:iterator周遊集合對象
- value屬性,從值棧中擷取對應的集合對象
- var,設定疊代元素的變量
例如:action代碼:
package com.cszy.action;
import java.util.ArrayList;
import java.util.List;
import com.cszy.entity.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class TagAction2 extends ActionSupport{
private List<User> userlist;
public List<User> getUserlist() {
return userlist;
}
@Override
public String execute() throws Exception {
ActionContext.getContext().getValueStack().set("userrole","1");
userlist = new ArrayList<>();
userlist.add(new User("tom","123"));
userlist.add(new User("admin","123"));
userlist.add(new User("domain","123"));
//把資料放入值棧
return SUCCESS;
}
}
jsp代碼:
<h3>通過s:iterator周遊集合對象</h3>
<h4>s:iterator value屬性是用來擷取值棧中的集合對象</h4>
<s:iterator value="userlist" var="demo">
<s:property value="#demo.username"/>
<s:property value="#demo.pwd"/> -->root
<s:property value="username"/>
<s:property value="pwd"/> -->EL
${demo.username}==>${demo.pwd}
<br />
</s:iterator>
頁面效果:
<s:if><s:elseif><s:else>控制标簽
- 作用:頁面判斷,其中的test屬性可以接收OGNL表達式。
例如:jsp代碼:
<h4>s:if 頁面判斷,其中的test屬性可以接收OGNL表達式</h4>
<s:if test="userrole == 1">
<s:property value="判斷成功"/>
</s:if>
此處假設在action中設定了userrole的值為1,那麼這裡就會擷取到userrole的值為1,1==1,那麼就會顯示判斷成功
<s:a>超連結标簽
<!-- action:請求的 URL
namespace:請求的是哪個 namespace 下面的 action
超連結傳值方式一
-->
<s:a action="tag3" namespace="/">
<s:param name="name">tom</s:param>
new 請求 1
</s:a><br>
<!-- 超連結傳值方式二
錯誤的傳值寫法:<s:param name="name" value="igeek"></s:param>
-->
<s:a action="tag3" namespace="/">
<!-- value:ognl 表達式,通路是對象 -->
<s:param name="name" value="'igeek'"></s:param> new 請求 2
</s:a>
使用者界面(UI)标簽:使用者界面标簽主要包括兩類:表單類标簽和其他類标簽
<s:form>
作用:生成 form 标簽。
屬性:
- action 屬性,對應 struts.xml <action> 元素 name 屬性;
- namespace 屬性,對象 struts.xml <package>元素 namespace 屬性
<s:textfield>, <s:password>, <s:hidden>, <s:textarea>
作用:
- <s:textfield> 文本框 ,生成 <input type=”text ” >
- <s:password> 密碼域 ,生成<input type=”password” >
- <s:hidden> 隐藏域 , 生成 <input type=”hidden” >
- <s:textarea>文本域,生成<textarea></textarea>
屬性:
<s:radio>、<s:checkboxlist>、<s:select>
作用:(#構造 map 集合)
- <s:radio> 接收 list 或者 map 生成一組單選按鈕
- <s:select> 接收 list 或者 map ,生成一組下拉清單
- <s:checkboxlist> 接收 list 或者 map ,生成一組複選框
綜合代碼:
<h3>struts2 form表單</h3>
<s:form action="tag5" method="post">
<h4>文本框:<s:textfield name="username"></s:textfield> </h4>
<h4>密碼框:<s:password name="password"></s:password> </h4>
<h4>隐藏域:<s:hidden name="hide" value="hide"></s:hidden> </h4>
<h4>文本域:<s:textarea name="content"></s:textarea> </h4>
<hr/>
<h4>單選按鈕<s:radio list="{'男','女'}" name="sex"></s:radio> </h4>
<h4>複選框<s:checkboxlist list="{'籃球','足球','看書'}" name="hobby"></s:checkboxlist> </h4>
<h4>下拉框<s:select list="{'上海','北京','東京'}" name="city"></s:select> </h4>
<s:reset value="重置"></s:reset>
<s:submit value="送出"></s:submit>
</s:form>