2012-02-09 86 views
0

我是新的結構體,如果我沒有使用正確的術語或太模糊,請原諒。從Struts中的單個請求觸發多個操作

我在頁面上有多個表單。我將每個表單的action屬性綁定到struts-config中的單獨操作。每個表單的提交工作正常。但我也想在頁面加載時預先填充所有表單。

我試圖在struts config中創建多個s,所有這些都使用相同的路徑,但每個使用不同的類型屬性。但只有決賽似乎被執行。有沒有辦法讓所有這些動作都可以執行,或者有什麼方法可以讓某個動作觸發其他動作,或者類似的東西?我只是做一個設置控制器,但你只能綁定一個表單到一個動作,所以我不認爲這會起作用。

我想我使用Struts 1

+0

你爲什麼要這樣做?因爲它們是完全不同的框架,所以確定你正在使用哪個版本可能是個好主意。 – 2012-02-20 21:37:42

回答

0

不知道您的表單數據有關,但即使它不是,而是一種策略,可以工作正在實施的基礎數據,例如:

public class DataAction extends ActionSupport 
{ 
    private Data1 data1 = new Data1() // or whatever strategy of populating data 
    public Data1 getData() { return data1 } 
    public void execute() 
    { 
     // any common execution code 
    } 
} 

,然後擴展操作爲每個表單

public class Form1Action extends DataAction 
{ 
    public void execute() 
    { 
    super.execute(); 
    // unique execution code 
    } 
} 
從JSP頁面

然後,只需調用每個表單中的數據對象(S),因爲他們將繼承形成的基類。對於不想在Action的每個請求中加載數據對象的情況,可以簡單地使用基本Data類中的一些邏輯,並讓擴展類使用該邏輯來決定是否預先填充該數據對象。

另一個策略是讓一個單獨的Action處理所有的表單。再次,這隻根據你的數據和你的設計是有意義的。如果它們在邏輯上不相關,則不要將它們合併爲一個單獨的操作。

+0

戴夫上面問的另一個更好的問題是你爲什麼要這樣做。我可以想象幾個用例,但它們可能不是你的情況。根據您的設計和數據,即使我上面提出的Struts2解決方案可能完全不合適。 – KappaMax 2012-02-21 05:02:33