Полосы - Динамически сгенерированные поля ввода, связанные с сбором, не могут быть установлены на пустые

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

  •  29-09-2019
  •  | 
  •  

Вопрос

Я использую полосы для проекта и у меня есть ситуация, которую я не могу понять. В моем бобе у меня есть список объектов (для установки параметров конфигурации приложения), а в JSP я динамически создаю поля ввода для каждого объекта. Для обычного редактирования все работает нормально, однако, если я попытаюсь установить поле, чтобы опустошить значение объекта, остается тем, что было ранее. Я широко смотрел через код и уверен, что он не выполняется ни одним из написанных нами кода. Когда я отлаживаю, я вижу, что метод setValue () моего объекта вызывается для всех объектов конфигурации, кроме того, который является пустым, а не SetValue вызывается с пустой строкой, которая, как я ожидаю.

Кто -нибудь знает, делают ли полосы под капюшоном, что влияет на это?

Спасибо

Фрагменты кода:

Объектный код:

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

Код бобов действий:

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

Просмотреть код 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>
...
Это было полезно?

Решение

???-??????? ?? ????????? ?????? ???? ??? ??????? HTTP. ????? ???????, ?????? ????? @Before ? ???????? ???? ??? ? ??? () ????? ?? ?????? ???? ?????? ????? ?????.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top