Wo-ow.

interesting solution. I still think writing that patch for MyFaces
would have been the faster way of getting this to run ;)

regards,

Martin

On 2/9/06, Matthias Kahlau <[EMAIL PROTECTED]> wrote:
> Hi Volker,
>
>
> many thanks, it works now. I already tested it with the HtmlSelectOneRadio
> components outside of UIData, but I got runtime errors because they hadn't
> been found for the related HtmlRadio components. That's why I added them as
> children to UIData, what solved the error, but the evaluation didn't work.
>
> Using the HtmlSelectOneRadio components outside of UIData and specifying
> absolute IDs in the for attribute did the trick... Now I can use a table
> with table headers for each column, what hadn't been possible with
> HtmlPanelGrid.
>
>
> Regards,
>
> Matthias
>
> > -----Ursprüngliche Nachricht-----
> > Von: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED] Auftrag
> > von Volker Weber
> > Gesendet: Donnerstag, 9. Februar 2006 11:18
> > An: MyFaces Discussion
> > Betreff: Re: AW: Problem with evaluation of Tomahawk HtmlSelectOneRadio
> > components inside UIData (programmatically created UI)
> >
> >
> > Hi Matthias,
> >
> > just an idea, may work or not, but worth a try imho:
> >
> > put the HtmlSelectOneRadio component(s) somewhere out of the uidata
> > (e.g. as child of viewRoot) and set a id, also set a id to all parent
> > namingcontainers.
> >
> > in the for attribute of the HtmlRadio components use a absolute id (e.g.
> > ":[id_of_viewRoot]:[id_of_HtmlSelectOneRadio]", if HtmlSelectOneRadio is
> > on top level).
> >
> > Not sure if this will work, but after a short look into
> > HtmlRadioRenderer.java and implementation of findComponent() i think
> > this could work.
> >
> > Regards,
> >   Volker
> >
> > Matthias Kahlau wrote:
> > >>For UIData, not a thousand components represent thousand rows,
> > >>but only one.
> > >
> > >
> > > But I didn't use only one HtmlSelectOneRadio component for all rows.
> > > Instead, I use many HtmlSelectOneRadio components, one component for one
> > > row.
> > >
> > > Using one HtmlSelectOneRadio component for all rows had only been a
> > > potential solution. Your explanation kills this idea for the
> > moment, but I
> > > think it doesn't explain why my current solution doesn't work...
> > >
> > >
> > > Regards,
> > >
> > > Matthias
> > >
> > >
> > >>-----Ursprüngliche Nachricht-----
> > >>Von: [EMAIL PROTECTED]
> > >>[mailto:[EMAIL PROTECTED] Auftrag
> > >>von Martin Marinschek
> > >>Gesendet: Mittwoch, 8. Februar 2006 23:24
> > >>An: Matthias Kahlau
> > >>Cc: MyFaces Discussion
> > >>Betreff: Re: Problem with evaluation of Tomahawk HtmlSelectOneRadio
> > >>components inside UIData (programmatically created UI)
> > >>
> > >>
> > >>Yes, it has somehting to do with UIData.
> > >>
> > >>For UIData, not a thousand components represent thousand rows,
> > >>but only one.
> > >>
> > >>Much like in Swing... So it's a little different there...
> > >>
> > >>regards,
> > >>
> > >>Martin
> > >>
> > >>On 2/8/06, Matthias Kahlau <[EMAIL PROTECTED]> wrote:
> > >>
> > >>>Thanks Martin,
> > >>>
> > >>>but do you know, why I might get components that aren't properly
> > >>>initialized?
> > >>>
> > >>>I wonder about that, because processing the user input after
> > >>
> > >>locating the
> > >>
> > >>>components by using findComponent works for all the other
> > >>
> > >>question types I
> > >>
> > >>>use (without UIData), e. g. by using
> > >>>
> > >>>- only one HtmlSelectOneRadio component and some HtmlRadio components,
> > >>>- only one HtmlSelectManyCheckbox component and some HtmlCheckbox
> > >>>components,
> > >>>- only one HtmlInputText or HtmlInputTextarea
> > >>>
> > >>>Has this sth. to do with UIData?
> > >>>
> > >>>
> > >>>Regards,
> > >>>
> > >>>Matthias
> > >>>
> > >>>
> > >>>>-----Ursprüngliche Nachricht-----
> > >>>>Von: [EMAIL PROTECTED]
> > >>>>
> > >>
> > >>[mailto:[EMAIL PROTECTED] Auftrag
> > >>
> > >>>>von Martin Marinschek
> > >>>>Gesendet: Mittwoch, 8. Februar 2006 23:05
> > >>>>An: MyFaces Discussion
> > >>>>Betreff: Re: Problem with evaluation of Tomahawk HtmlSelectOneRadio
> > >>>>components inside UIData (programmatically created UI)
> > >>>>
> > >>>>
> > >>>>Ok,
> > >>>>
> > >>>>I do think I know now what your problem is:
> > >>>>
> > >>>>the findComponent will deliver a component which is not properly
> > >>>>initialized (it will return the stamp, but not the actual initialized
> > >>>>component for this row...)
> > >>>>
> > >>>>So what you're really looking for is the functionality I implemented a
> > >>>>few weeks ago for findComponent, to return a properly initialized
> > >>>>component for this row.
> > >>>>
> > >>>>But: I can't help you out with fixing this in the radio-renderer right
> > >>>>now, sorry. And you're in stress, too, to get your thesis finished,
> > >>>>right? So I really don't know how to fix this. no clue.
> > >>>>
> > >>>>Anyone else able to help?
> > >>>>
> > >>>>regards,
> > >>>>
> > >>>>Martin
> > >>>>
> > >>>>On 2/8/06, Matthias Kahlau <[EMAIL PROTECTED]> wrote:
> > >>>>
> > >>>>>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
> > >>>>>>
> > >>>>>
> > >>>>
> > >>>>--
> > >>>>
> > >>>>http://www.irian.at
> > >>>>
> > >>>>Your JSF powerhouse -
> > >>>>JSF Consulting, Development and
> > >>>>Courses in English and German
> > >>>>
> > >>>>Professional Support for Apache MyFaces
> > >>>
> > >>>
> > >>
> > >>--
> > >>
> > >>http://www.irian.at
> > >>
> > >>Your JSF powerhouse -
> > >>JSF Consulting, Development and
> > >>Courses in English and German
> > >>
> > >>Professional Support for Apache MyFaces
> > >
> > >
> >
> > --
> > Don't answer to From: address!
> > Mail to this account are droped if not recieved via mailinglist.
> > To contact me direct create the mail address by
> > concatenating my forename to my senders domain.
>
>


--

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