Stripes - Dynamisch generierte Eingabefelder Sammlung gebunden nicht in der Lage festgelegt werden leeren
Frage
Ich bin mit Streifen für ein Projekt und habe eine Situation, die ich nicht verstehen kann. In meiner Aktion Bohne habe ich eine Liste von Objekten (app Config params Einstellung) und in dem jsp ich dynamisch erschaffe Eingabefelder für jedes Objekt. Für einen normalen bearbeiten funktioniert alles einwandfrei aber wenn ich ein Feld versuchen, und legen Sie den Objektwert bleibt zu leeren, was es vorher war. Ich habe ausführlich über den Code geschaut und bin überzeugt, es wird von keinem der Code getan wir geschrieben haben. Wenn ich debuggen ich sehen kann, dass die Methode setValue () von meinem Objekt aufgerufen wird für alle Konfiguration mit Ausnahme der Objekte, die leer ist, anstatt setValue mit einer leeren Zeichenkette wird, das ist das, was ich erwarten würde.
Wer weiß, wenn Streifen etwas unter der Haube tun, die dies beeinflussen?
Danke
Code-Schnipsel:
Objekt-Code:
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;
}
...
}
Action-Bean-Code:
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;
}
...
}
Ansicht JSP-Code:
...
<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>
...
Lösung
Webbrowsers fügen Sie keine leeren Felder auf der HTTP-Anforderung. Somit kann durch die @Before Verfahren zu entfernen und diesen Code in das Putting Ansicht () Methode Sie Problem behoben wird.