【问题标题】:Stripes : RedirectResolution; How can I redirect to specific action event?条纹:重定向解析;如何重定向到特定的操作事件?
【发布时间】:2010-03-29 18:13:56
【问题描述】:

我的条纹应用程序中有一个动作 bean。默认的处理程序/方法将显示一个数据列表,我的所有MarketResearch 对象的列表

在我的 JSP 上,我可以单击一个以查看其详细信息,这会将我带到另一个 JSP,该 JSP 具有基于您选择的特定 MarketResearch 对象的预填充表单。

我的操作 bean 上有另一个方法,它映射到 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;
    }


}

有可能吗?还是我从一个不好的角度来看待这种情况,应该重新考虑?

谢谢

【问题讨论】:

    标签: redirect action stripes


    【解决方案1】:

    是的。您可以将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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多