Strisce - campi di inserimento generate dinamicamente legati alla raccolta in grado di impostare svuotare
Domanda
Sto usando Stripes per un progetto e ho una situazione non riesco a capire. Nel mio fagioli azione Ho una lista di oggetti (per l'impostazione params applicazione di configurazione) e nella jsp che sto creando dinamicamente i campi di input per ogni oggetto. Per una modifica normale tutto funziona bene se cerco di impostare un campo di svuotare i resti valore oggetto quello che era in precedenza. Ho guardato a lungo attraverso il codice e sono fiducioso che non è stato fatto da qualunque parte del codice che abbiamo scritto. Quando metto a punto posso vedere che il metodo setValue () del mio oggetto viene chiamato per tutti gli oggetti di configurazione, tranne quello che è vuoto, piuttosto che setValue essere chiamato con una stringa vuota che è quello che mi sarei aspettato.
Qualcuno sa se Stripes sta facendo qualcosa sotto il cofano che sta colpendo questo?
Grazie
frammenti di codice:
Il codice oggetto:
public class Configuration implements Serializable {
@Id
@Basic(optional = false)
@Column(name = "id", nullable = false)
private Integer id;
@Basic(optional = false)
@Column(name = "name", nullable = false, length = 100, updatable = false)
private String name;
@Basic(optional = true)
@Column(name = "value", nullable = true, length = 200)
private String value;
...
public void setValue(String value) {
//This is never called when I empty my input field
this.value = value;
}
...
}
Azione Codice Bean:
public class ConfigActionBean extends BaseActionBean {
private List<Configuration> allConfigurationEntries;
@Before(stages = LifecycleStage.BindingAndValidation)
public void rehydrate() {
allConfigurationEntries = configurationService.getAllEntries();
}
@DefaultHandler
public Resolution view() {
return new ForwardResolution(
"/WEB-INF/jsp/admin/configuration.jsp");
}
public Resolution Save() {
configurationService.saveAllEntries(allConfigurationEntries,is);
return new RedirectResolution(ConfigActionBean.class,"view");
}
public void setAllConfigurationEntries(
List<Configuration> allConfigurationEntries) {
this.allConfigurationEntries = allConfigurationEntries;
}
public List<Configuration> getAllConfigurationEntries() {
return allConfigurationEntries;
}
...
}
Visualizza codice JSP:
...
<c:forEach items="${actionBean.allConfigurationEntries}" var="items" varStatus="loop">
<div>
<s:label for="allConfigurationEntries[${loop.index}].value">${items.name}</s:label>
<s:text id="${items.name}" name="allConfigurationEntries[${loop.index}].value" value="${items.value}" />
</div>
</c:forEach>
...
Soluzione
browser web non aggiungere campi vuoti alla richiesta HTTP. Così, eliminando il metodo @Before e mettere questo codice nel Vista) metodo di voi sono problema verrà risolto (.