tags:

views:

98

answers:

2

I have a form that looks somewhat like this:

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
}

and in my JSP I have the following:

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

I'm getting a JSP exception - getter property is not been found in the form although it is there. Can somebody help me with this problem please?

A: 

This may sound obvious, but did you add the tag library to the page?

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

Your code does not show whether you have a getIimsForecast() method on your form (it only shows iimsForecast property) - if you don't, you need to add it. However, that's not the only problem.

Your property path includes yearDemands and monthDemands and getter methods for both return Lists. That's illegal - nested property path must either have single beans or have indexed access for list elements (e.g. iimsForecast.yearDemands[0].monthDemands[0].demandValue).

Finally, you probably don't need to prefix your property path with form, although that depends on your configuration and whether you have an enclosing <html:form> tag.

ChssPly76