ストライプ:RedirectResolution。どのように私は、特定のアクションイベントにリダイレクトすることができますか?
質問
私は自分のストライプアプリケーションでアクションBeanを持っています。デフォルトのハンドラ/方法は、データのリスト、すべての私のMarketResearch
オブジェクトのリストが表示されます。
私のJSPでは、私はこれがあなたが選択した特定のMarketResearch
オブジェクトに基づいて事前に人口形で別のJSPに私をとり、その詳細を表示するために、1つをクリックすることができます。
私はこれは改正フォーム上にあるものを取り込み、持続すること、送信ボタンをsave
にマッピングされている私のアクションBeanの別の方法を持っています。これが行われた後、私はそれがむしろリスト(デフォルトハンドラ)アクションよりも、バックフォームにリダイレクトしたい、これは可能ですか?
私の行動は、次のとおりです。
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;
}
}
それは可能ですか?それとも私が悪いの角度から状況に近づいていますし、再ファクタをすべきか?
おかげ
解決
はい。あなたは、フォームのJSPにRedirectResolution
を返すことができます。あなたは、パラメータで困難を抱えている場合、あなたはsave()
方法でそれらを持っている場合、あなたはそのように行うことができます:
return new RedirectResolution("/theJsp.jsp")
.addParameter("one", one)
.addParameter("two", two)
.addParameter("three", three)
.flash(this);
あなたがフォームに渡されたのparamsをお持ちでない場合は、、あなたは何とか行きそれらを維持する必要があります。あなたはそこにそれを持っていると思いますので、フォームを通じてMarketResearchオブジェクトを渡すことができます。
<stripes:hidden name="marketResearch" value="${ActionBean.marketResearch}"/>
そして、あなたのMarketResearchActionBean
に必要なインスタンス変数/ゲッター/セッターを追加します。
所属していません StackOverflow