2010-03-29 21 views
3

我在我的條紋應用程序中有一個動作bean。默認處理程序/方法將顯示一個數據列表,這是我所有的對象的列表Stripes:RedirectResolution;我如何重定向到特定的行動事件?

在我的JSP上,我可以點擊一個來查看它的詳細信息,這將帶我到一個具有預填充表單的不同JSP根據您選擇的特定對象MarketResearch

我有被映射到save我的行動豆另一種方法提交按鈕,這需要在什麼是修訂後的表格上,並堅持它。發生這種情況後,我希望它重定向回表單,而不是列表(默認處理程序)操作,這可能嗎?

我的操作如下:

public class MarketResearchAction extends BaseAction 
{ 

    @SpringBean 
    ClientService clientService; 
    private static final String VIEW = "/jsp/marketResearch.jsp"; 
    private Client client; 
    private Client clientBeforeChanges; 


    public Client getClient() 
    { 
     return client; 
    } 

    public void setClient(Client client) 
    { 
     this.client = client; 
    } 

    @DefaultHandler 
    public Resolution viewAll() 
    { 
     return new ForwardResolution(VIEW); 
    } 

    public Resolution viewClientMarketResearch() 
    { 
     if (client.getSector().equals("Education")) 
     { 
      return new ForwardResolution("/jsp/marketResearchEducation.jsp"); 
     } else if (client.getSector().equals("Local Government")) 
     { 
      return new ForwardResolution("/jsp/marketResearchLocalGovernment.jsp"); 
     } else if (client.getSector().equals("Housing Association")) 
     { 
      return new ForwardResolution("/jsp/marketResearchHousing.jsp"); 
     } 
     return new ForwardResolution("/jsp/viewClientMarketResearch.jsp"); 
    } 

    public Resolution save() 
    { 
     clientBeforeChanges = clientService.getClientById(client.getId()); 
     clientService.persistClient(client); 
     getContext().getMessages().add(new SimpleMessage("{0} updated", client.getName())); 
     return new RedirectResolution("/MarketResearch.action").flash(this); 
    } 

    public Client getClientBeforeChanges() 
    { 
     return clientBeforeChanges; 
    } 

    public void setClientBeforeChanges(Client clientBeforeChanges) 
    { 
     this.clientBeforeChanges = clientBeforeChanges; 
    } 

    public ClientService getClientService() 
    { 
     return clientService; 
    } 

    public void setClientService(ClientService clientService) 
    { 
     this.clientService = clientService; 
    } 


} 

這可能嗎?還是我從一個不好的角度來處理這種情況,並應該重新考慮?

感謝

回答

3

是。您可以將RedirectResolution返回到jsp形式。如果您遇到了困難的參數,如果你在save()方法有他們,你可以做像這樣:

return new RedirectResolution("/theJsp.jsp") 
    .addParameter("one", one) 
    .addParameter("two", two) 
    .addParameter("three", three) 
    .flash(this); 

如果你沒有被傳遞給表單的參數,可以將你不得不讓他們繼續前進。您可以通過表格傳遞MarketResearch對象,以便您可以在該表單中找到它。

<stripes:hidden name="marketResearch" value="${ActionBean.marketResearch}"/> 

,並添加您的MarketResearchActionBean必要的實例變量/的getter/setter。