BTW: With JSP, I only had a selectBooleanCheckbox in a column of the dataTable. It had a component binding and I could access it after setting the rowIndex of UIData.
In my current case, I need multiple radiobuttons (HtmlRadio components) in each row, aligned with the column headers. If I would use only one HtmlSelectOneRadio component for all rows, and access it by using UIData, what should I set the HtmlRadio components "for" attribute to? I have only one HtmlSelectOneRadio component. Can you imagine that it would work if the HtmlRadio components of all rows refer the same HtmlSelectOneRadio component? Regards, Matthias > -----Ursprüngliche Nachricht----- > Von: Matthias Kahlau [mailto:[EMAIL PROTECTED] > Gesendet: Mittwoch, 8. Februar 2006 22:46 > An: MyFaces Discussion > Betreff: AW: Problem with evaluation of Tomahawk HtmlSelectOneRadio > components inside UIData (programmatically created UI) > > > 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 > >

