Rayas - campos de entrada generadas dinámicamente con destino a la colección incapaz de ajustarse a vaciar

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

  •  29-09-2019
  •  | 
  •  

Pregunta

Estoy utilizando las rayas por un proyecto y tengo una situación que no puedo entender. En mi grano de acción Tengo una lista de objetos (para configurar parametros aplicación de configuración) y en el JSP estoy creando dinámicamente campos de entrada para cada objeto. Para una edición normal, sin embargo, todo funciona bien si lo intento y establecer un campo de vaciar los restos de valor objeto lo que era anteriormente. He examinado extensivamente a través del código y estoy seguro de que no se está haciendo por nada del código que hemos escrito. Cuando puedo depurar puedo ver que el método setValue () de mi objeto está siendo llamado para toda la configuración objetos excepto el que está en blanco, en lugar de ser llamado setValue con una cadena vacía que es lo que cabría esperar.

¿Alguien sabe si las rayas está haciendo algo debajo del capó que está afectando esto?

Gracias

fragmentos de código:

El código objeto:

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;
  }
  ...
 }

Acción Código 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;
  }
  ...
}

Ver código 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>
...
¿Fue útil?

Solución

webbrowsers no añadir campos vacíos a la petición HTTP. Por lo tanto eliminando el método @Before y poner este código en el vista) método que está problema se resolverá (.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top