خطوط - حقول الإدخال التي تم إنشاؤها ديناميكيًا مرتبطة بالجملة غير قادرة على ضبطها لتفريغها

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>
...
هل كانت مفيدة؟

المحلول

لا تضيف WebBrowsers حقول فارغة إلى طلب HTTP. وبالتالي عن طريق إزالة طريقة @قبل وضع هذا الرمز في رأي() الطريقة التي ستحلها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top