Java的Struts框架中append標(biāo)簽與generator標(biāo)簽的使用
append 標(biāo)簽:
這些append標(biāo)簽需要兩個(gè)或兩個(gè)以上的列表作為參數(shù),并追加它們放在一起,如下圖所示:
<s:append var="myAppendIterator">
<s:param value="%{myList1}" />
<s:param value="%{myList2}" />
<s:param value="%{myList3}" />
</s:append>
<s:iterator value="%{#myAppendIterator}">
<s:property />
</s:iterator>
如果有兩個(gè)列表A和B的值A(chǔ)1,A2和B1,B2。合并列表,會(huì)給你的A1,A2,B1,B2,而append 名單,會(huì)有A1,A2,B1,B2。
創(chuàng)建動(dòng)作類:
首先,讓我們創(chuàng)建一個(gè)簡(jiǎn)單的類叫做Employee.java,它看起來(lái)像:
package com.yiibai.struts2;
import java.util.ArrayList;
import java.util.List;
import org.apache.struts2.util.SubsetIteratorFilter.Decider;
public class Employee {
private String name;
private String department;
public Employee(){}
public Employee(String name,String department)
{
this.name = name;
this.department = department;
}
private List employees;
private List contractors;
public String execute() {
employees = new ArrayList();
employees.add(new Employee("George","Recruitment"));
employees.add(new Employee("Danielle","Accounts"));
employees.add(new Employee("Melissa","Recruitment"));
employees.add(new Employee("Rose","Accounts"));
contractors = new ArrayList();
contractors.add(new Employee("Mindy","Database"));
contractors.add(new Employee("Vanessa","Network"));
return "success";
}
public Decider getRecruitmentDecider() {
return new Decider() {
public boolean decide(Object element) throws Exception {
Employee employee = (Employee)element;
return employee.getDepartment().equals("Recruitment");
}
};
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public List getEmployees() {
return employees;
}
public void setEmployees(List employees) {
this.employees = employees;
}
public List getContractors() {
return contractors;
}
public void setContractors(List contractors) {
this.contractors = contractors;
}
}
Employee類有兩個(gè)屬性 - name 和 department,我們也有兩個(gè)員工名單 - employees 和contractors。我們有一個(gè)方法叫做getRecruitmentDecider,返回Decider 對(duì)象。Decider 實(shí)現(xiàn)返回true,如果雇員招聘部門(mén)工作,否則返回false。
接下來(lái),讓我們創(chuàng)建一個(gè)DepartmentComparator比較Employee對(duì)象:
package com.yiibai.struts2;
import java.util.Comparator;
public class DepartmentComparator implements Comparator {
public int compare(Employee e1, Employee e2) {
return e1.getDepartment().compareTo(e2.getDepartment());
}
@Override
public int compare(Object arg0, Object arg1) {
return 0;
}
}
在上面的例子所示,部門(mén)比較的基礎(chǔ)上按字母順序排列的部門(mén)員工進(jìn)行比較。
創(chuàng)建視圖
創(chuàng)建一個(gè)文件叫做employee.jsp以下內(nèi)容:
<%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <html> <head> <title>Employees</title> </head> <body> <b>Employees and Contractors Merged together</b> <br /> <s:append id="allemployees"> <s:param value="employees" /> <s:param value="contractors" /> </s:append > <s:iterator value="allemployees"> <s:property value="name"/>, <s:property value="department"/><br/> </s:iterator> </body> </html>
append標(biāo)簽需要兩個(gè)或兩個(gè)以上列出作為參數(shù)。我們需要給予追加一個(gè)id,這樣我們就可以重用它。在這個(gè)例子中,我們提供了作為參數(shù)傳遞給員工和承包商的附加標(biāo)簽。然后,我們使用“allemployees”ID遍歷附加列表和打印員工的細(xì)節(jié)。
配置文件
struts.xml中應(yīng)該像這樣:
<?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="helloworld" extends="struts-default">
<action name="employee"
class="com.yiibai.struts2.Employee"
method="execute">
<result name="success">/employee.jsp</result>
</action>
</package>
</struts>
web.xml中,應(yīng)該像這樣:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>Struts 2</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
右鍵點(diǎn)擊項(xiàng)目名稱,并單擊Export > WAR File 創(chuàng)建一個(gè)WAR文件。然后部署此WAR在Tomcat的webapps目錄下。最后,啟動(dòng)Tomcat服務(wù)器和嘗試訪問(wèn)URL http://localhost:8080/HelloWorldStruts2/employee.action。這會(huì)給出以下畫(huà)面:

generator 標(biāo)簽:
generator標(biāo)簽生成一個(gè)迭代器的基礎(chǔ)上提供val屬性。以下generator標(biāo)簽生成一個(gè)迭代器,并使用迭代器標(biāo)簽打印出來(lái)。
<s:generator val="%{'aaa,bbb,ccc,ddd,eee'}">
<s:iterator>
<s:property /><br/>
</s:iterator>
</s:generator>
我們經(jīng)常遇到的一些情況,必須創(chuàng)建列表或數(shù)組上遍歷列表??梢詣?chuàng)建列表或數(shù)組使用scriptlet或者可以使用generator 標(biāo)簽。 tag.
創(chuàng)建action類:
package com.yiibai.struts2;
public class HelloWorldAction{
private String name;
public String execute() throws Exception {
return "success";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
創(chuàng)建視圖
下列 helloWorld.jsp 展示使用generator 標(biāo)記:
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h2>Example of Generator Tag</h2>
<h3>The colours of rainbow:</h3>
<s:generator val="%{'Violet,Indigo,Blue,
Green,Yellow,Orange,Red '}" count="7"
separator=",">
<s:iterator>
<s:property /><br/>
</s:iterator>
</s:generator>
</body>
</html>
在這里,我們創(chuàng)建一個(gè)generator 標(biāo)簽,我們要求它解析的字符串,其中包含逗號(hào)分隔的列表,形成了彩虹的顏色。我們告訴發(fā)電機(jī)標(biāo)簽,分隔符是“,”我們希望所有七個(gè)值在列表中。如果我們只關(guān)心前三個(gè)值,然后我們會(huì)設(shè)置計(jì)數(shù)至3。發(fā)電機(jī)標(biāo)記在體內(nèi),我們使用了迭代器去通過(guò)由generator 標(biāo)記創(chuàng)建的值的打印屬性的值。
配置文件
struts.xml 應(yīng)該像這樣:
<?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="helloworld" extends="struts-default">
<action name="hello"
class="com.yiibai.struts2.HelloWorldAction"
method="execute">
<result name="success">/HelloWorld.jsp</result>
</action>
</package>
</struts>
web.xml 應(yīng)該像這樣:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>Struts 2</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
右鍵點(diǎn)擊項(xiàng)目名稱,并單擊Export > WAR File 創(chuàng)建一個(gè)WAR文件。然后部署此WAR在Tomcat的webapps目錄下。最后,啟動(dòng)Tomcat服務(wù)器和嘗試訪問(wèn)URL http://localhost:8080/HelloWorldStruts2/hello.action。這會(huì)給出以下畫(huà)面:

- Java的Struts框架中配置國(guó)際化的資源存儲(chǔ)的要點(diǎn)解析
- 深入解析Java的Struts框架中的控制器DispatchAction
- 詳解Java的Struts框架以及相關(guān)的MVC設(shè)計(jì)理念
- Java的Struts框架中登陸功能的實(shí)現(xiàn)和表單處理器的使用
- 簡(jiǎn)單說(shuō)明Java的Struts框架中merge標(biāo)簽的使用方法
- 總結(jié)Java的Struts框架的異常處理方法
- 詳解Java的Struts框架中注釋的用法
- Java的Struts框架中Action的編寫(xiě)與攔截器的使用方法
- Java下Struts框架中的ActionForm類詳解
相關(guān)文章
MySQL中使用auto_increment修改初始值和步長(zhǎng)
本文主要介紹了MySQL中使用auto_increment修改初始值和步長(zhǎng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-05-05
mysql實(shí)現(xiàn)從導(dǎo)出數(shù)據(jù)的sql文件中只導(dǎo)入指定的一個(gè)表
這篇文章主要介紹了mysql實(shí)現(xiàn)從導(dǎo)出數(shù)據(jù)的sql文件中只導(dǎo)入指定的一個(gè)表,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
mysql動(dòng)態(tài)游標(biāo)學(xué)習(xí)(mysql存儲(chǔ)過(guò)程游標(biāo))
mysql動(dòng)態(tài)游標(biāo)示例,通過(guò)準(zhǔn)備語(yǔ)句、視圖和靜態(tài)游標(biāo)實(shí)現(xiàn),大家參考使用吧2013-12-12
CentOS系統(tǒng)中MySQL5.1升級(jí)至5.5.36
有相關(guān)測(cè)試數(shù)據(jù)說(shuō)明從5.1到5.5+,MySQL性能會(huì)有明顯的提升,具體的需要自己建立測(cè)試環(huán)境去實(shí)踐下,今天我們就來(lái)操作下,并記錄下來(lái)升級(jí)的具體步驟2017-07-07
MySQL 數(shù)據(jù)庫(kù) ALTER命令講解
MySQL 為關(guān)系型數(shù)據(jù)庫(kù)(Relational Database Management System)。本文重點(diǎn)給大家介紹mysql數(shù)據(jù)庫(kù)alert命令講解,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧2016-05-05
MySQL 5.6.36 Windows x64位版本的安裝教程詳解
這篇文章主要介紹了MySQL 5.6.36 Windows x64位版本的安裝教程詳解,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-05-05
MySQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)MMM高可用群集架構(gòu)
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)MMM高可用群集架構(gòu),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12

