I am getting unexpected results with indices when iterating nested indexed radiobuttons.

The form bean is "applicationForm". It has an ArrayList of SkillCategory objects called "skillCategories". Each SkillCategory in turn has an ArrayList of StudentSkill objects called "skillsList".

Here is the jsp code fragment:

<nested:iterate name="applicationForm" id="category" property="skillCategories">
<fieldset>
<legend><nested:write property="skillCategoryName" /></legend>
<nested:iterate id="skill" property="skillsList" indexId="skillIndex">
<p>
<label for="skill_name"><nested:write name="skill" property="skillName" /></label><br />
<nested:radio property="selectedSkillLevelName" value="Unfamiliar" indexed="true"/>Unfamiliar
<nested:radio property="selectedSkillLevelName" value="Familiar" indexed ="true" />Familiar
<nested:radio property="selectedSkillLevelName" value="Proficient" indexed="true"/>Proficient
<nested:radio property="selectedSkillLevelName" value="Expert" indexed="true"/>Expert
</p>
</nested:iterate>
</fieldset>
</nested:iterate>



The resulting HTML source code looks like:
<p>
<label for="skill_name">Photoshop</label><br />
<input type="radio" name="applicationForm[0].skillCategories[0].skillsList[0].selectedSkillLevelName" value="Unfamiliar" checked="checked">Unfamiliar
<input type="radio" name="applicationForm[0].skillCategories[0].skillsList[0].selectedSkillLevelName" value="Familiar">Familiar
<input type="radio" name="applicationForm[0].skillCategories[0].skillsList[0].selectedSkillLevelName" value="Proficient">Proficient
<input type="radio" name="applicationForm[0].skillCategories[0].skillsList[0].selectedSkillLevelName" value="Expert">Expert
</p>


<p>
<label for="skill_name">InDesign</label><br />
<input type="radio" name="applicationForm[1].skillCategories[0].skillsList[1].selectedSkillLevelName" value="Unfamiliar" checked="checked">Unfamiliar
<input type="radio" name="applicationForm[1].skillCategories[0].skillsList[1].selectedSkillLevelName" value="Familiar">Familiar
<input type="radio" name="applicationForm[1].skillCategories[0].skillsList[1].selectedSkillLevelName" value="Proficient">Proficient
<input type="radio" name="applicationForm[1].skillCategories[0].skillsList[1].selectedSkillLevelName" value="Expert">Expert
</p>



I really want to get something like this:


<p>
<label for="skill_name">Photoshop</label><br />
<input type="radio" name="skillCategories[0].skillsList[0].selectedSkillLevelName" value="Unfamiliar" checked="checked">Unfamiliar
<input type="radio" name="skillCategories[0].skillsList[0].selectedSkillLevelName" value="Familiar">Familiar
<input type="radio" name="skillCategories[0].skillsList[0].selectedSkillLevelName" value="Proficient">Proficient
<input type="radio" name="skillCategories[0].skillsList[0].selectedSkillLevelName" value="Expert">Expert
</p>


<p>
<label for="skill_name">InDesign</label><br />
<input type="radio" name="skillCategories[0].skillsList[1].selectedSkillLevelName" value="Unfamiliar" checked="checked">Unfamiliar
<input type="radio" name="skillCategories[0].skillsList[1].selectedSkillLevelName" value="Familiar">Familiar
<input type="radio" name="skillCategories[0].skillsList[1].selectedSkillLevelName" value="Proficient">Proficient
<input type="radio" name="skillCategories[0].skillsList[1].selectedSkillLevelName" value="Expert">Expert
</p>




In other words, I don't want "applicationForm" pre-pended onto the property name, and I certainly don't want it to be indexed (the applicationForm index matches whatever the skill index is, which is pretty weird).

Reply via email to