You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by bu...@apache.org on 2003/09/22 18:10:15 UTC
DO NOT REPLY [Bug 23332] New: -
RadioGroup tag to avoid using scriplet expressions with nested iterators
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=23332>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=23332
RadioGroup tag to avoid using scriplet expressions with nested iterators
Summary: RadioGroup tag to avoid using scriplet expressions with
nested iterators
Product: Struts
Version: 1.1 Final
Platform: Other
OS/Version: Other
Status: NEW
Severity: Normal
Priority: Other
Component: Custom Tags
AssignedTo: struts-dev@jakarta.apache.org
ReportedBy: olgt@yahoo.com
I believe that there is a need for the RadioGroup tag. If the radio tag us
iused inside nested iterate tags then the scriplets is the only (?) solution
currently to get it working. Here is an example.
The jsp operates on the collection of the Question instances. And each
question has a list of pre-defined answers to choose from. The idea is
to list all of the questions and then collect the answers chosen. The
"list" and "text" types are working (generating both
name="questions[x].answer", where x is the index of the question) but
radio does not.
If indexed="true" is specified, then each pre-defined radio answer has
a name="questions[x].answer" WHERE x is the index of the PRE-DEFINED
ANSWER from the predefinedAnswers iterator (not from the questions
iterator).
If indexed attribute is not specified, then the input field name is
rendered just as name="answer".
Here is the relevant portion of the jsp:
<logic:iterate id="questions" property="questions"
name="questionSetForm">
<logic:equal name="questions" property="type" value="list">
<div>It's a list</div>
<html:select name="questions" property="answer" indexed="true">
<html:optionsCollection name="questions"
property="predefinedAnswers" value="id" label="label"/>
</html:select>
</logic:equal>
<logic:equal name="questions" property="type" value="text">
<div>It's a text</div>
<html:text name="questions" property="answer" indexed="true" />
</logic:equal>
<logic:equal name="questions" property="type" value="radio">
<div>It's a radio choice</div>
<logic:iterate id="predefinedAnswer" property="predefinedAnswers"
name="questions">
<html:radio name="questions" property="answer" value="id"
idName="predefinedAnswer">
<bean:write name="predefinedAnswer" property="label" />
</html:radio>
</logic:iterate>
</logic:equal>
</logic:iterate>
The questionSetForm class defines only one property that hold a
collection of Question instances:
public List getQuestions() {
return questions;
}
public void setQuestions(List questions) {
this.questions = questions;
}
The Question class defines the following relevant properties (along
with corresponding get/set methods):
private Integer id = null;
private Integer questionSetId = null;
private String type = null;
//Holds the collection of the PredefinedAnswer instances
private List predefinedAnswers = null;
private String label = null;
private String answer = null;
The PredefinedAnswer class defines the id and label properties used to
render the list of choices.
The only solution (work around, rather) that comes to mind is to add the
indexId attribute to the external loop and use its value in the radio property:
<logic:iterate id="questions" property="questions" name="questionSetForm"
indexId="index">
...
<html:radio property="<%= \"questions[\"+ index +\"].answer\"%>"
value="id" idName="predefinedAnswer">
I believe that this example demonstrates the need to the RadioGroup tag that
would work similar to the existing Select tag by defining the name of the
property there.
---------------------------------------------------------------------
To unsubscribe, e-mail: struts-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-dev-help@jakarta.apache.org