Stripes: RedirectResolution; Comment puis-je rediriger à l'événement d'action spécifique?

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

  •  23-09-2019
  •  | 
  •  

Question

J'ai un haricot d'action dans ma demande de rayures. Le gestionnaire par défaut / méthode affiche une liste de données, une liste de tous mes objets MarketResearch

Sur mon JSP, je peux cliquer sur l'un pour afficher les détails, cela me prend à un autre JSP avec une forme pré-remplie en fonction de l'objet particulier de MarketResearch que vous avez sélectionné.

J'ai une autre méthode sur mon haricot d'action qui est mis en correspondance avec le bouton soumettre save, cela prend dans ce qui est la forme modifiée, et il persiste. Après cela a eu lieu, je veux qu'il rediriger à la forme, plutôt que de l'action liste (gestionnaire par défaut), est-ce possible?

Mon action se présente comme suit:

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


}

Est-il possible? Ou suis-je aborder la situation d'un mauvais angle et devrait re-facteur?

Merci

Était-ce utile?

La solution

Oui. Vous pouvez retourner un RedirectResolution à la forme jsp. Si vous éprouvez des difficultés avec les paramètres, si vous les avez dans la méthode save(), vous pouvez le faire comme ceci:

return new RedirectResolution("/theJsp.jsp")
    .addParameter("one", one)
    .addParameter("two", two)
    .addParameter("three", three)
    .flash(this);

Si vous n'avez pas les params qui ont été transmis à la forme, vous devrez les maintenir en quelque sorte. Vous pouvez passer l'objet MarketResearch par la forme que vous auriez là.

<stripes:hidden name="marketResearch"  value="${ActionBean.marketResearch}"/> 

Et ajoutez la variable d'instance requise / getter / setter sur votre MarketResearchActionBean.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top