myfaces-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matthias Kahlau" <mkah...@web.de>
Subject AW: AW: Problem with evaluation of Tomahawk HtmlSelectOneRadio components inside UIData (programmatically created UI)
Date Fri, 10 Feb 2006 10:05:25 GMT
> Wo-ow.
>
> interesting solution. I still think writing that patch for MyFaces
> would have been the faster way of getting this to run ;)

Maybe for you, but not for me, who has never written a patch or extended a
component or renderer ...


Regards,

Matthias

> -----Ursprüngliche Nachricht-----
> Von: users-return-16862-mkahlau=web.de@myfaces.apache.org
> [mailto:users-return-16862-mkahlau=web.de@myfaces.apache.org]Im Auftrag
> von Martin Marinschek
> Gesendet: Freitag, 10. Februar 2006 10:12
> An: MyFaces Discussion
> Betreff: Re: AW: Problem with evaluation of Tomahawk HtmlSelectOneRadio
> components inside UIData (programmatically created UI)
>
>
> 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 <mkahlau@web.de> 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: users-return-16799-mkahlau=web.de@myfaces.apache.org
> > >
> [mailto:users-return-16799-mkahlau=web.de@myfaces.apache.org]Im 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: users-return-16779-mkahlau=web.de@myfaces.apache.org
> > >
> >>[mailto:users-return-16779-mkahlau=web.de@myfaces.apache.org]Im 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 <mkahlau@web.de> 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: users-return-16772-mkahlau=web.de@myfaces.apache.org
> > > >>>>
> > > >>
> > >
> >>[mailto:users-return-16772-mkahlau=web.de@myfaces.apache.org]Im 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 <mkahlau@web.de> 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: users-return-16744-mkahlau=web.de@myfaces.apache.org
> > > >>>>>>
> > > >>>>
> > >
> >>[mailto:users-return-16744-mkahlau=web.de@myfaces.apache.org]Im Auftrag
> > > >>
> > > >>>>>>von Matthias Kahlau
> > > >>>>>>Gesendet: Mittwoch, 8. Februar 2006 20:45
> > > >>>>>>An: MyFaces Discussion; martin@marinschek.com
> > > >>>>>>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: users-return-16742-mkahlau=web.de@myfaces.apache.org
> > > >>>>>>>
> > > >>>>
> > >
> >>[mailto:users-return-16742-mkahlau=web.de@myfaces.apache.org]Im 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 <mkahlau@web.de>
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


Mime
View raw message