在iterate标签内部使用indexed属性

类别:Java 点击:0 评论:0 推荐:

在iterate标签内部使用indexed属性

Using the Indexed Attribute in the Scope of the Iterate Tag

常常有这样一种需求,一个form中包含多个提交项,而项的数目是不固定,同时每个项还需要同用户进行交互。例如:一个关于培训反馈的调查表,对于不同的培训,调查的项目是不同的。而我们要做的是不论调查项目如何变化,我们的jsp,formbean和action则不用做任何修改。

1.首先FormBean中

 private FeedBackItemBean[] feedBackItems;

    public void setPageItems(int index, FeedBackItemBean feedBackItem)

    {

        pageItems[index]=feedBackItem;

    }

   

    public FeedBackItemBean getPageItems(int index)

    {

        return pageItems[index];

    }

    /**

     * @return Returns the pageItems.

     */

    public FeedBackItemBean[] getPageItems()

    {

        return pageItems;

    }

    /**

     * @param pageItems The pageItems to set.

     */

    public void setPageItems(FeedBackItemBean[] pageItems)

    {

        this.pageItems = pageItems;

    }

   *请注意一下上面的get/set方法。

其中FeedBackItemBean 是用户定义的Bean,为举例,只列举部分属性:

    private String feedBackItemTitle = null;

    private String feedBackItemContent = null;

private long feedBackItemValue = 0;

2.在jsp中

代码片断如下:

<logic:notEmpty name="applicationTrainingForm" property="feedBackBean.feedBackItems">

<logic:iterate id="pageItems" name="applicationTrainingForm" property="feedBackBean.feedBackItems" indexId="nIndex">

<logic:equal name="pageItems" property="feedBackItemType" value="<%=String.valueOf(FeedBackConstants.FEEDBACK_CHOOSE)%>">

<TR>

<TD class="TableHeader"><bean:write name="pageItems" property="feedBackItemTitle"/></TD>

<TD width="35%" class="TableHeader">

<html:radio name="pageItems" indexed="true" property="feedBackItemValue" value="10">

  10</html:radio>

    <html:radio name="pageItems" indexed="true" property="feedBackItemValue" value="9">

    9</html:radio>

    <html:radio name="pageItems" indexed="true" property="feedBackItemValue" value="8">

    8</html:radio>

    <html:radio name="pageItems" indexed="true" property="feedBackItemValue" value="7">

    7</html:radio>

    <html:radio name="pageItems" indexed="true" property="feedBackItemValue" value="6">

    6</html:radio></TD>

<TD width="35%" class="TableHeader"><html:radio name="pageItems" indexed="true" property="feedBackItemValue" value="5">

  5</html:radio>

    <html:radio name="pageItems" indexed="true" property="feedBackItemValue" value="4">

    4</html:radio>

    <html:radio name="pageItems" indexed="true" property="feedBackItemValue" value="3">

    3</html:radio>

    <html:radio name="pageItems" indexed="true" property="feedBackItemValue" value="2">

    2</html:radio>

    <html:radio name="pageItems" indexed="true" property="feedBackItemValue" value="1">

    1</html:radio></TD>

</TR>

</logic:equal>

<logic:equal name="pageItems" property="feedBackItemType" value="<%=String.valueOf(FeedBackConstants.FEEDBACK_TEXT)%>">

<TR>

  <TD class="TableHeader"><bean:write name="pageItems" property="feedBackItemTitle"/></TD>

  <TD colspan="2" class="TableHeader"><html:textarea name="pageItems" indexed="true" property="feedBackItemContent" styleClass="TextBox" cols="100%"/></TD>

</TR>

</logic:equal>

</logic:iterate>

</logic:notEmpty>

 

注意,经解析以后的html代码如下:

<TR>

<TD class="TableHeader">Structure, focus and logic.</TD>

<TD width="35%" class="TableHeader">

<input type="radio" name="pageItems[0].feedBackItemValue" value="10">10

    <input type="radio" name="pageItems[0].feedBackItemValue" value="9">9

    <input type="radio" name="pageItems[0].feedBackItemValue" value="8">8

    <input type="radio" name="pageItems[0].feedBackItemValue" value="7">7

    <input type="radio" name="pageItems[0].feedBackItemValue" value="6">6</TD>

<TD width="35%" class="TableHeader"><input type="radio" name="pageItems[0].feedBackItemValue" value="5">5

    <input type="radio" name="pageItems[0].feedBackItemValue" value="4">4

    <input type="radio" name="pageItems[0].feedBackItemValue" value="3">3

    <input type="radio" name="pageItems[0].feedBackItemValue" value="2">2

    <input type="radio" name="pageItems[0].feedBackItemValue" value="1">1</TD>

</TR>

 

 

 

 

<TR>

<TD class="TableHeader">Depth and breadth</TD>

<TD width="35%" class="TableHeader">

<input type="radio" name="pageItems[1].feedBackItemValue" value="10">10

    <input type="radio" name="pageItems[1].feedBackItemValue" value="9">9

    <input type="radio" name="pageItems[1].feedBackItemValue" value="8">8

    <input type="radio" name="pageItems[1].feedBackItemValue" value="7">7

    <input type="radio" name="pageItems[1].feedBackItemValue" value="6">6</TD>

<TD width="35%" class="TableHeader"><input type="radio" name="pageItems[1].feedBackItemValue" value="5">5

    <input type="radio" name="pageItems[1].feedBackItemValue" value="4">4

    <input type="radio" name="pageItems[1].feedBackItemValue" value="3">3

    <input type="radio" name="pageItems[1].feedBackItemValue" value="2">2

    <input type="radio" name="pageItems[1].feedBackItemValue" value="1">1</TD>

</TR>

 

 

 

 

<TR>

<TD class="TableHeader">Impact of activities</TD>

<TD width="35%" class="TableHeader">

<input type="radio" name="pageItems[2].feedBackItemValue" value="10">10

    <input type="radio" name="pageItems[2].feedBackItemValue" value="9">9

    <input type="radio" name="pageItems[2].feedBackItemValue" value="8">8

    <input type="radio" name="pageItems[2].feedBackItemValue" value="7">7

    <input type="radio" name="pageItems[2].feedBackItemValue" value="6">6</TD>

<TD width="35%" class="TableHeader"><input type="radio" name="pageItems[2].feedBackItemValue" value="5">5

    <input type="radio" name="pageItems[2].feedBackItemValue" value="4">4

    <input type="radio" name="pageItems[2].feedBackItemValue" value="3">3

    <input type="radio" name="pageItems[2].feedBackItemValue" value="2">2

    <input type="radio" name="pageItems[2].feedBackItemValue" value="1">1</TD>

</TR>

 

大家已经注意到了name的值:

以pageItems[0].feedBackItemValue为例做一下说明,首先struts是以reflect机制工作的,于是他调用的方法应该为getPageItems(0).getFeedBackItemValue(),并以此方法来获取值。读到这里,你应该明白了。

于是,剩下的工作就很简单了,只需要在Action中…

3.Action中

ApplicationTrainingForm applicationTrainingForm = (ApplicationTrainingForm) form;

FeedBackItemBean[] pageItems = applicationTrainingForm.getPageItems();

即可获得用户输入的值。

 

 

本文的一切权利归本文作者所有,未经许可不得转载。

本文地址:http://com.8s8s.com/it/it11450.htm