ps:在ActionSupport中定義了四个String属性,分别為SUCCESS,INPUT,ERROR,LOGIN。
基本上就我所知就是給我們回傳用來作狀態區別的,且不需要加入""雙引號
Ex:
另外在ActionSupport 的class內可以有自定方法,然後透過struts.xml去訂義
,若struts.xml內無定義,默認是public String execute() 方法
Ex:
Struts.xml:
Action的class AddLeagueAction:
這次的課程主要是使用 Struts2 本身tag的編輯物件如 TextFiled和下拉式選單等
參考所需之官網資料
EL
http://docs.oracle.com/javaee/1.4/tutorial/doc/JSPIntro7.html
ServletContext
http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html
ServletActionContext
http://struts.apache.org/development/2.x/struts2-core/apidocs/org/apache/struts2/ServletActionContext.html
<%@ taglib prefix="s" uri="/struts-tags" %> 要使用前,依然少不了要匯入Struts的連線資源
========================================================
<s:form action="leahue_add" method="POST" >
<%--
Season:
<select name='season'>
<option value="UNKNOWN">UNKNOWN</option>
<c:forEach var="season" items="${initParam.seasons_list}" >
<c:if test="${season eq param.season}">
<c:set var="selected" value="selected"/>
</c:if>
<option value="${season}" ${selected}>${season}</option>
</c:forEach>
</select>
<br/><br/>
--%>
<s:textfield label="Year" name="year" />
<s:select label="season" name="season"
headerKey="UNKNOWN" headerValue="UNKNOWN"
list="seasons_list" >
</s:select>
<s:textfield label="title" name="title" />
<s:submit value="Add League" />
使用Struts 去取代 <C 元件
seasons_list 是 From 裡的 action "leahue_add" 導致class內並去抓取class內所定義好的資料
headerKey="UNKNOWN" headerValue="UNKNOWN" 就是開始顯示的值與value
(headerValue 是顯示端)
另外三個 <s:submit value="Add League" /> <s:textfield label="title" name="title" />
<s:textfield label="Year" name="year" /> 一看就懂,不贅述。
==========================================
struts.xml
<action name="list_leagues"
class="duke.soccer.web.ctrler.action.ListLeagueAction">
<result name="success">/jsp/list_leagues.jsp</result>
</action>
<action name="leahue_add_form"
class="duke.soccer.web.ctrler.action.addleauge">
<result name="input">/jsp/add_league.jsp</result>
</action>
<action name="leahue_add"
class="duke.soccer.web.ctrler.action.addleauge"
method="add">
<result name="success">/jsp/success.jsp</result>
</action>
addleauge Class:
public class addleauge extends ActionSupport {
private String year ;
private String season;
private String title;
private String[] seasons_list;
League league;
public League getLeague() {
return league;
}
public void setLeague(League league) {
this.league = league;
}
public addleauge(){
ServletContext sc = ServletActionContext.getServletContext();
seasons_list = sc.getInitParameter("seasons_list").split(",");
}
public String[] getSeasons_list() {
return seasons_list;
}
public void setSeasons_list(String[] seasonsList) {
seasons_list = seasonsList;
}
public String getYear() {
return year;
}
public void setYear(String year) {
this.year = year;
}
public String getSeason() {
return season;
}
public void setSeason(String season) {
this.season = season;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String execute() throws Exception{
// Goto the list view
String path = INPUT;
return path;
}
public String add()
{
ActionContext ac = ActionContext.getContext();
Map application = ac.getApplication();
LeagueService leagueSvc = (LeagueService)application.get("leagueSvc");
int year = Integer.parseInt(this.year);
league = leagueSvc.createLeague(year, season, title);
return SUCCESS;
}
success.jsp
Your request to add the <i>${league.title} (${league.year},${league.season})</i> league was successful.
以上 按下按鍵後 struts 會將導致設定好的 class內,並導致該進入之頁面,
而後可以看到 success 頁面所以的title、year及season