Hi Martin!

If you can't imagine the cause of the problem, maybe you can give me a hint
to a workable solution using HtmlDataTable ...


Regards,

Matthias

> -----Ursprüngliche Nachricht-----
> Von: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] Auftrag
> von Matthias Kahlau
> Gesendet: Mittwoch, 8. Februar 2006 20:45
> An: MyFaces Discussion; [EMAIL PROTECTED]
> Betreff: AW: Problem with evaluation of Tomahawk HtmlSelectOneRadio
> components inside UIData (programmatically created UI)
>
>
> I didn't use JSP, the UI is programmatically created.
>
> This is a part of the method which adds HtmlSelectOneRadio
> components to the
> HtmlDataTable:
>
> HtmlDataTable table = new HtmlDataTable();
>     this.form.getChildren().add(table);
>     table.setId(this.viewRoot.createUniqueId());
>     table.setVar("row");
>     table.setBorder(1);
>     table.setCellspacing("0");
>     table.setCellpadding("5");
>
>
> // the snippet which creates the HtmlSimpleUIColumn components for the
> table:
>
> for (int i = 0; i < columns; i++) {
>       column[i] = new HtmlSimpleColumn();
>       table.getChildren().add(column[i]);
>
>       if (i == 0) {
>
>         HtmlOutputText hot = new HtmlOutputText();
>         hot.setId(this.viewRoot.createUniqueId());
>         ValueBinding vb =
> app.createValueBinding("#{row.matrixfragetext}");
>         hot.setValueBinding("value", vb);
>         hot.setEscape(false);
>
>         column[i].setWidth("150");
>         column[i].getChildren().add(hot);
>
>       } else {
>
>         String text = ((Auswahlmoeglichkeit)sortedAm.get(i -
> 1)).getText();
>         HtmlOutputText header = this.createHtmlOutputText(text, null);
>         column[i].setHeader(header);
>
>         HtmlRadio radio = new HtmlRadio();
>         radio.setId(this.viewRoot.createUniqueId());
>         ValueBinding vb =
> app.createValueBinding("#{row.htmlSelectOneRadioId}");
>         radio.setValueBinding("for", vb);
>         radio.setIndex(i - 1);
>         column[i].getChildren().add(radio);
>       }
>
>     }
>
>
> // the snippet which creates the HtmlSelectOneRadio components
> for each row
> of the table:
> List rowData = new ArrayList();
> for (int i = 0; i < matrixfragetexte.length; i++) {
>       Matrixfragetext mft = (Matrixfragetext)matrixfragetexte[i];
>
>       HtmlSelectOneRadio radios = new HtmlSelectOneRadio(); // Tomahawk
>
>       table.getChildren().add(radios);
>       radios.setId(id);
>       radios.setLayout("spread");
>       radios.setRendererType("org.apache.myfaces.Radio");
>       radios.setConverter(new IntegerConverter());
>
>       List selectItems =
>
> SelectItemsCreator.createSelectItemsListByAuswMglWithoutLabel(sorted
> Am);
>       UISelectItems usi = new UISelectItems();
>       usi.setValue(selectItems);
>       radios.getChildren().add(usi);
>
>       radios.setValue(selected); // initially selected value
>
>       MatrixfrageRow row = new MatrixfrageRow();
>       row.setMatrixfragetext(mft.getText());
>       row.setHtmlSelectOneRadioId(radios.getId());
>       rowData.add(row);
> }
>
> table.setValue(model); // contains the rowData ArrayList
>
>
> When processing the user input, the HtmlSelectOneRadio components are
> located by using the findComponent() method of the UIComponent class.
> This works well. Then the submitted or local value is evaluated
> (taking the
> one which is not null), and it's always the initially selected value, no
> matter what had been selected by the user.
>
> I hope you can imagine what's going wrong...
>
>
> Many thanks,
>
> Matthias
>
> > -----Ursprüngliche Nachricht-----
> > Von: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED] Auftrag
> > von Martin Marinschek
> > Gesendet: Mittwoch, 8. Februar 2006 20:19
> > An: MyFaces Discussion
> > Betreff: Re: Problem with evaluation of Tomahawk HtmlSelectOneRadio
> > components inside UIData (programmatically created UI)
> >
> >
> > Can you give us the JSP sources?
> >
> > regards,
> >
> > Martin
> >
> > On 2/8/06, Matthias Kahlau <[EMAIL PROTECTED]> wrote:
> > > Hi!
> > >
> > >
> > > I tried to use a Tomahawk HtmlDataTable to programmatically
> > display a matrix
> > > containing questions in the left column and some radiobuttons
> > in the other
> > > columns.
> > >
> > > I added a HtmlRadio component to each HtmlSimpleColumn
> > instance. For each
> > > row, I added a HtmlSelectOneRadio component to the table. The
> HtmlRadio
> > > components "for" attribute uses a value-binding to the current
> > row object of
> > > the data set, to get the ID of the related HtmlSelectOneRadio
> component.
> > >
> > > I don't know if I've followed the right approach. The table
> is displayed
> > > correctly, but the evaluation of the selected radiobuttons
> > doesn't work. It
> > > doesn't matter was has been selected, I always get value="1" for each
> > > HtmlSelectOneRadio component.
> > >
> > > Maybe this is the wrong approach. Do I have to use only one
> > > HtmlSelectOneRadio component with a component binding, and process the
> > > selections by iterating over the UIData's data set, like it
> is done when
> > > using JSP?
> > >
> > >
> > > Following a Html code snippet of the data table:
> > >
> > > <table border="1" cellpadding="5" cellspacing="0">
> > > <thead><tr><th width="150"></th><th>erste Am</th><th>zweite
> > > Am</th><th>dritte Am</th><th>vierte Am</th></tr></thead>
> > >
> > > <tbody id="Form:_id15:tbody_element">
> > >
> > > <tr>
> > > <td width="150">erste Teilfrage</td>
> > >
> > > <td><label>
> > > <input type="radio" name="Form:_id15_0:Frage_6_Teil_1"
> checked="checked"
> > > value="1" />
> > > </label></td>
> > >
> > > <td><label>
> > > <input type="radio" name="Form:_id15_0:Frage_6_Teil_1" value="2" />
> > > </label></td>
> > >
> > > <td><label>
> > > <input type="radio" name="Form:_id15_0:Frage_6_Teil_1" value="3" />
> > > </label></td>
> > >
> > > <td><label>
> > > <input type="radio" name="Form:_id15_0:Frage_6_Teil_1" value="4" />
> > > </label></td>
> > > </tr>
> > >
> > >
> > > <tr>
> > > <td width="150">zweite Teilfrage</td>
> > >
> > > <td><label>
> > > <input type="radio" name="Form:_id15_1:Frage_6_Teil_2"
> checked="checked"
> > > value="1" />
> > > </label></td>
> > >
> > > <td><label>
> > > <input type="radio" name="Form:_id15_1:Frage_6_Teil_2" value="2" />
> > > </label></td>
> > >
> > > <td><label>
> > > <input type="radio" name="Form:_id15_1:Frage_6_Teil_2" value="3" />
> > > </label></td>
> > >
> > > <td><label>
> > > <input type="radio" name="Form:_id15_1:Frage_6_Teil_2" value="4"
> > > /></label></td>
> > > </tr>
> > >
> > > ....
> > >
> > > </tbody>
> > > </table>
> > >
> > >
> > >
> > > Regards,
> > >
> > > Matthias
> > >
> > >
> >
> >
> > --
> >
> > http://www.irian.at
> >
> > Your JSF powerhouse -
> > JSF Consulting, Development and
> > Courses in English and German
> >
> > Professional Support for Apache MyFaces
>

Reply via email to