Stripes - Dynamisch generierte Eingabefelder Sammlung gebunden nicht in der Lage festgelegt werden leeren

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

  •  29-09-2019
  •  | 
  •  

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>
...
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top