Rayas: RedirectResolution; ¿Cómo puedo redirigir al caso específico de la acción?
Pregunta
Tengo un bean de acción en mi solicitud rayas. El controlador predeterminado / método mostrará una lista de datos, una lista de todos los objetos de mi MarketResearch
En mi JSP, puedo hacer clic en uno para ver sus detalles, esto me lleva a otro JSP con un formulario de pre-poblada en función del objeto MarketResearch
particular que ha seleccionado.
Tengo otro método en mi grano de acción que se asigna a la save
botón de enviar, esto toma en lo que es en la forma modificada, y persiste. Después de esto ha tenido lugar, quiero que se redirija de nuevo a la forma, en lugar de a la acción lista (controlador predeterminado), es esto posible?
Mi acción es el siguiente:
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;
}
}
¿Es posible? O estoy acercando a la situación de un mal ángulo y debería volver a factores?
Gracias
Solución
Sí. Se podría devolver un RedirectResolution
a la forma JSP. Si usted está teniendo dificultad con los parámetros, si los tiene en el método save()
, se puede hacer de esta manera:
return new RedirectResolution("/theJsp.jsp")
.addParameter("one", one)
.addParameter("two", two)
.addParameter("three", three)
.flash(this);
Si usted no tiene los parametros que se han pasado a la forma, que tendrá que mantenerlas en funcionamiento de alguna manera. Se podía pasar el objeto MarketResearch a través del formulario por lo que tendría que existe.
<stripes:hidden name="marketResearch" value="${ActionBean.marketResearch}"/>
Y añadir el requisito instancia de variable / captador / definidor en su MarketResearchActionBean
.