Tutorial :html:text tag not working



Question:

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?


Solution:1

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.


Solution:2

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" %>  

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »