Stripes: Ich kann ein Formular vorab füllen, aber nach so unterbreitet die FormBean ist null

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

  •  13-09-2019
  •  | 
  •  

Frage

Ich kann meine Streifen JSP Form mit einem Objekt, client in meinem Fall vorab füllen, aber wenn ich dieses Formular abgesendet hat, mein Objekt zurückkehrt als null.

Ich habe ein zweites „temp“ Objekt geschaffen, das eine parallele Duplikat client ist und dies behält seine Werte, so kann ich nicht ein Problem sehe ein Objekt in der Anforderung vorbei

Meine Form ist wie folgt:

<s:form beanclass="com.jameselsey.salestracker.action.ViewClientAction">
            <s:hidden name="clientA" value="${actionBean.clientA}"/>
            <s:hidden name="clientId" value="${actionBean.clientId}"/>

            <table>
                <tr>
                    <td>Name : </td>
                    <td><s:text name="client.name"/></td>
                </tr>
                <tr>
                    <td>Sector : </td>
                    <td><s:text name="client.sector"/></td>
                </tr>
              <!-- omitted some attirbutes, not needed here -->
            </table>
        </s:form>

Meine Aktion sieht aus wie

public class ViewClientAction extends BaseAction
{

    @SpringBean
    ClientService clientService;// = new ClientService();
    private Integer clientId;
    private Client client;
    private Client clientA;

    public void setClient(Client client)
    {
        this.client = client;
    }
    public Integer getClientId()
    {
        return clientId;
    }

    public void setClientId(Integer clientId)
    {
        this.clientId = clientId;
    }

    public Client getClientA()
    {
        return clientA;
    }

    public void setClientA(Client clientA)
    {
        this.clientA = clientA;
    }



    public Client getClient()
    {
        return client;
    }

    @DefaultHandler
    public Resolution quickView()
    {
        clientA = clientService.getClientById(clientId);
        client = clientService.getClientById(clientId);
        return new ForwardResolution("/jsp/viewClientQuickView.jsp");
    }

    public Resolution save()
    {
        clientService.persistClient(client);
        return new ForwardResolution("/jsp/reports.jsp");
    }

    public Resolution viewClientInfo()
    {
        client = clientService.getClientById(clientId);
        return new ForwardResolution("/jsp/viewClientClientInfo.jsp");
    }
...

Wenn ich einen Haltepunkt an clientService.persistClient(client); einstellen kann ich, dass ClientA sehen alle ursprünglichen Werte des Objekts hat, noch client nulled wird.

Habe ich etwas übersehen, die den Form-Bean zum client Objekt in meiner Aktion bindet?

Danke

War es hilfreich?

Lösung

Fügen Sie diese Zeile in Ihrer JSP:

    <s:hidden name="client" value="${actionBean.client}"/>

Andere Tipps

Ich habe dieses Szenario funktioniert, indem eine @Before Methode Hinzufügen das verschachtelte Objekt rehydratisieren. Nach diesem Werk richtig speichern

@Before(stages = LifecycleStage.BindingAndValidation)
public void rehydrate() {
   if (context.getRequest().getParameter("save")!=null){
       this.domainObject = getHibernateSession().load(DomainObject.class, context.getRequest().getParameter("id"));
   }
}

public void save(){
    Session session=getHibernateSession();
    session.update(domainObject);
    session.commit();
    //...
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top