Stripes: Ich kann ein Formular vorab füllen, aber nach so unterbreitet die FormBean ist null
-
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
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();
//...
}