2009-07-29 4 views
0

Ich habe ein Formular, das ein wenig wie folgt aussieht:html: text-Tag nicht funktioniert

public class MaintainForecastInputForm extends ActionForm { 
    private MainMenuForm mainMenuForm = new MainMenuForm(); 
    public SelectProdLineAssociationForm selectProdLineAssociationForm = new SelectProdLineAssociationForm(); 
    private EconometricDataForm econometricDataForm = new EconometricDataForm(); 
    private EconometricImportDownloadForm econometricImportDownloadForm = new EconometricImportDownloadForm(); 
    private String userAction; 
    private List<MaintainForecastInputForm.DemandForecast> demands = new ArrayList<MaintainForecastInputForm.DemandForecast>(); 
    private List<MaintainForecastInputForm.DemandForecast> forecasts = new ArrayList<MaintainForecastInputForm.DemandForecast>(); 
    private DemandForecast iimsForecast = new DemandForecast(); 
    private DemandForecast econometricForecast = new DemandForecast(); 

    public static class DemandForecast { 
     private String subType; 
     private String shortTermWtAvg="0.0"; 
     private String midTermWtAvg="0.0"; 
     private String longTermWtAvg="0.0"; 
     private String shortTermPct="0.0"; 
     private String midTermPct="0.0"; 
     private String longTermPct="0.0"; 
     private List yearDemands = new ArrayList(); 

    public static class Year { 
      private String fyTotalValue="0.0"; 
      private String fyPctChange="0.0"; 
     private List monthDemands = new ArrayList(); 

     public String getFyPctChange() { 
       return fyPctChange; 
      } 

      public void setFyPctChange(String fyPctChange) { 
       this.fyPctChange = fyPctChange; 
      } 

      public String getFyTotalValue() { 
       return fyTotalValue; 
      } 

      public void setFyTotalValue(String fyTotalValue) { 
       this.fyTotalValue = fyTotalValue; 
      } 
    } // Year 

     public static class Month { 
      private String demandValue="0.0"; 
      private String demandQuantity="0.0"; 

     public String getDemandQuantity() { 
       return demandQuantity; 
      } 

      public void setDemandQuantity(String demandQuantity) { 
       this.demandQuantity = demandQuantity; 
      } 

      public String getDemandValue() { 
       return demandValue; 
      } 

      public void setDemandValue(String demandValue) { 
       this.demandValue = demandValue; 
      } 
    } // Month 

    public String getLongTermPct() { 
      return longTermPct; 
     } 

     public void setLongTermPct(String longTermPct) { 
      this.longTermPct = longTermPct; 
     } 

     public String getLongTermWtAvg() { 
      return longTermWtAvg; 
     } 

     public void setLongTermWtAvg(String longTermWtAvg) { 
      this.longTermWtAvg = longTermWtAvg; 
     } 

     public String getMidTermPct() { 
      return midTermPct; 
     } 

     public void setMidTermPct(String midTermPct) { 
      this.midTermPct = midTermPct; 
     } 

     public String getMidTermWtAvg() { 
      return midTermWtAvg; 
     } 

     public void setMidTermWtAvg(String midTermWtAvg) { 
      this.midTermWtAvg = midTermWtAvg; 
     } 

     public String getShortTermPct() { 
      return shortTermPct; 
     } 

     public void setShortTermPct(String shortTermPct) { 
      this.shortTermPct = shortTermPct; 
     } 

     public String getShortTermWtAvg() { 
      return shortTermWtAvg; 
     } 

     public void setShortTermWtAvg(String shortTermWtAvg) { 
      this.shortTermWtAvg = shortTermWtAvg; 
     } 

     public String getSubType() { 
      return subType; 
     } 

     public void setSubType(String subType) { 
      this.subType = subType; 
     } 

     public List getYearDemands() { 
      return yearDemands; 
     } 

     public void setYearDemands(List yearDemands) { 
      this.yearDemands = yearDemands; 
     } 
    } // DemandForecast 
} 

und in meine JSP Ich habe folgendes:

<c:forEach items="${form.iimsForecast.yearDemands}" var="yearDemand"    varStatus="year"> 
    <tr> 
    <td>${yearDemand.fiscalYear}</td> 
    <c:forEach items="${yearDemand.monthDemands}" var="yearMonth"     varStatus="month"> 
     <c:choose> 
     <c:when test="${year.count == 1 && month.count < yearDemand.currentMonth}"> 
      <td class="lightShaded dmnd"> 
      <html-el:text property="form.iimsForecast.yearDemands.monthDemands.demandValue"> 
      </td> 
... 

Ich erhalte eine Ausnahme JSP - Getter-Eigenschaft wurde nicht in der Form gefunden, obwohl es dort ist. Kann mir bitte jemand mit diesem Problem helfen?

+2

Fügen Sie die Ausnahme hinzu, fügen Sie den gesamten Code hinzu und formatieren Sie ihn ordnungsgemäß. Dies ist nicht genug Information. – stevedbrown

Antwort

0

Das klingt vielleicht offensichtlich, aber haben Sie die Tag-Bibliothek der Seite hinzugefügt?

<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html-el" %> 
2

Ihr Code zeigt nicht, ob Sie eine getIimsForecast() Methode auf dem Formular (es zeigt nur iimsForecast Eigenschaft) - wenn Sie nicht tun, müssen Sie es hinzufügen. Das ist jedoch nicht das einzige Problem.

Ihr Eigenschaftenpfad enthält yearDemands und monthDemands und Getter-Methoden für beide Rückgabe List s. Das ist illegal - der geschachtelte Eigenschaftspfad muss entweder einzelne Beans haben oder einen indizierten Zugriff für Listenelemente haben (z. B. iimsForecast.yearDemands[0].monthDemands[0].demandValue).

Schließlich müssen Sie Ihren Eigenschaftspfad wahrscheinlich nicht mit form voranstellen, obwohl das von Ihrer Konfiguration abhängt und ob Sie ein umschließendes <html:form>-Tag haben.