Полосы :Перенаправлениерешение;Как я могу перенаправить на конкретное событие действия?

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

  •  23-09-2019
  •  | 
  •  

Вопрос

У меня есть компонент действия в моем приложении stripes.Обработчик / метод по умолчанию отобразит список данных, список всех моих MarketResearch Объекты

В моем JSP я могу щелкнуть по одному из них, чтобы просмотреть его детали, это приведет меня к другому JSP с предварительно заполненной формой, основанной на конкретном MarketResearch объект, который вы выбрали.

У меня есть другой метод в моем компоненте action, который сопоставлен с save кнопка отправить, она принимает то, что есть в измененной форме, и сохраняет это.После того, как это произойдет, я хочу, чтобы оно перенаправлялось обратно на форму, а не на действие listing (обработчик по умолчанию), возможно ли это?

Мои действия заключаются в следующем :

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;
    }


}

Возможно ли это?Или я подхожу к ситуации с неправильной точки зрения и должен переосмыслить?

Спасибо

Это было полезно?

Решение

ДА.Вы могли бы вернуть 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}"/> 

И добавьте требуемую переменную экземпляра / getter / setter на вашем MarketResearchActionBean.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top