ps:在ActionSupport中定義了四个String属性,分别為SUCCESS,INPUT,ERROR,LOGIN。

基本上就我所知就是給我們回傳用來作狀態區別的,且不需要加入""雙引號

Ex:

 

if(user==null){

 

      return SUCCESS;

 

  }else{

 

      return "someone";   //自訂字串

 

}

 

另外在ActionSupport 的class內可以有自定方法,然後透過struts.xml去訂義

,若struts.xml內無定義,默認是public String execute() 方法

Ex:

Struts.xml:

 

<action name="addleagueActions" 

 

   class="duke.soccer.web.ctrler.action.AddLeagueAction">

 

   <result name="success">/jsp/list_leagues.jsp</result>

 

</action>

 

<action name="To_add_league" 

 

   class="duke.soccer.web.ctrler.action.AddLeagueAction" 

 

   method="to_add">

 

<result name="success">/jsp/success.jsp</result>

 

</action>

 

 

Action的class   AddLeagueAction:

 

public String execute() throws Exception{

 

 

 

      String path = INPUT;

 

   return path; 

 

 

 

}

 

public String to_add() throws Exception{

 

 

 

      String path = SUCCESS;

 

   return path; 

 

 

 

 

 

 

這次的課程主要是使用 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

 

 

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 JoshS 的頭像
    JoshS

    JoshS的部落格

    JoshS 發表在 痞客邦 留言(0) 人氣()