ストライプ:RedirectResolution。どのように私は、特定のアクションイベントにリダイレクトすることができますか?

StackOverflow https://stackoverflow.com/questions/2540214

  •  23-09-2019
  •  | 
  •  

質問

私は自分のストライプアプリケーションでアクション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に必要なインスタンス変数/ゲッター/セッターを追加します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top