Rayas: RedirectResolution; ¿Cómo puedo redirigir al caso específico de la acción?

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

  •  23-09-2019
  •  | 
  •  

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

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top