Полосы :Перенаправлениерешение;Как я могу перенаправить на конкретное событие действия?
Вопрос
У меня есть компонент действия в моем приложении 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
.