2017-05-29 116 views
0

我有這樣的index.jsp:避免在索引頁循環

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<%@ taglib prefix="s" uri="/struts-tags"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd"> 

<html> 
<head> 
</head> 
<body> 
<h2>Simple Iterator</h2> 
<ol> 
<s:iterator value="comboMeals"> 
    <li><s:property /></li> 
</s:iterator> 
</ol> 

<h2>Iterator with IteratorStatus</h2> 
<table> 
<s:iterator value="comboMeals" status="comboMealsStatus"> 
    <tr> 
    <s:if test="#comboMealsStatus.even == true"> 
     <td style="background: #CCCCCC"><s:property/></td> 
    </s:if> 
    <s:elseif test="#comboMealsStatus.first == true"> 
     <td><s:property/> (This is first value) </td> 
    </s:elseif> 
    <s:else> 
     <td><s:property/></td> 
    </s:else> 
    </tr> 
</s:iterator> 
</table> 
</body> 
</html> 

這是我的Java類:

import java.util.ArrayList; 
import java.util.List; 

import com.opensymphony.xwork2.ActionSupport; 

public class IteratorKFCAction extends ActionSupport{ 

    private List<String> comboMeals; 

    public List<String> getComboMeals() { 
     return comboMeals; 
    } 

    public void setComboMeals(List<String> comboMeals) { 
     this.comboMeals = comboMeals; 
    } 

    public String execute() { 

     comboMeals = new ArrayList<String>(); 
     comboMeals.add("Snack Plate"); 
     comboMeals.add("Dinner Plate"); 
     comboMeals.add("Colonel Chicken Rice Combo"); 
     comboMeals.add("Colonel Burger"); 
     comboMeals.add("O.R. Fillet Burger"); 
     comboMeals.add("Zinger Burger"); 

     return SUCCESS; 
    } 
} 

我的想法是直接調用,填補索引頁面的動作,所以我把這一行內的index.jsp的頭標記

<META HTTP-EQUIV="Refresh" CONTENT="0;URL='start.do'"> 

但與此修復程序,我得到該頁面輸入一個「刷新循環」。有什麼辦法可以直接從代碼中調用動作,這樣我就不必通過瀏覽器中的URL手動設置它。

我也試過的第二溶液加入到的index.jsp這個代碼體:

<s:action name="iteratorKFCAction" executeResult="true" /> 

其中iteratorKFCAction是在struts.xml中該召回IteratorKFCAction指定的操作。在這種情況下,動作循環。

+0

重定向從index.jsp的路程。 index.jsp - > action - > some.jsp。 –

+0

不,我只是想直接在index.jsp中顯示動作。可能嗎? – NxA

+1

即使有可能,這並不意味着這是一個好主意。 標記是舊標記,你永遠不應該在新的開發中使用,元刷新技巧是過去的另一個不好的做法......你不能簡單地使用一個動作作爲歡迎頁面,或一個jsp重定向到一個動作? –

回答

2

Struts2的(和所有其他MVC框架)的主要目的是爲了路由URL到準備數據(你的情況comboMeals)的動作(控制器),並判斷結果(在你的情況總是SUCCESS)是映射到模板(視圖),你的情況index.jsp

在你struts.xml,你應該有類似

<action name="start.do" class="com.xxx.IteratorKFCAction"> 
    <result name="SUCCESS">/WEB-INF/.../index.jsp</result> 
</action> 
+0

'start.do'作爲動作名稱?通常'''後面的部分是一個動作擴展。 –