html:文本标记不起作用

时间:2009-07-29 15:52:47

标签: java struts jstl

我的表格看起来有点像这样:

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
}

在我的JSP中我有以下内容:

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

我收到一个JSP异常 - 虽然它存在,但在表单中找不到getter属性。有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

您的代码不会显示您的表单上是否有getIimsForecast()方法(它只显示iimsForecast属性) - 如果您没有,则需要添加它。但是,这不是唯一的问题。

您的属性路径包含yearDemandsmonthDemands以及返回List的getter方法。这是非法的 - 嵌套属性路径必须具有单个bean或具有列表元素的索引访问权限(例如iimsForecast.yearDemands[0].monthDemands[0].demandValue)。

最后,您可能不需要在属性路径前加form作为前缀,但这取决于您的配置以及是否有一个封闭的<html:form>标记。

答案 1 :(得分:0)

这听起来很明显,但您是否已将标签库添加到页面中?

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