Two approaches:

(1)

 protected String getOnclick(FacesBean bean)
 {
   return null;
 }

 protected String getOnclick(FacesContext context,
   UIComponent component, FacesBean bean)
 {
   String onclick = super.getOnclick(bean);
    ... perform extra  manipulation ...
   return onclick;
 }

 ... and call this new method from elsewhere in your renderer.

(2)
 protected void encodeBegin(
   FacesContext        context,
   RenderingContext arc,
   UIComponent         comp,
   FacesBean           bean) throws IOException
 {
   ... etc ...
   String clientId = comp.getClientId(context);
   // Make sure we don't have anything to save
   assert(arc.getCurrentClientId() == null);
   arc.setCurrentClientId(clientId);
    ... etc...
    arc.setCurrentClientId(null);
 }

 protected String getOnclick(FacesBean bean)
 {
   String onclick = super.getOnclick(bean);
   String clientId = RenderingContext.getCurrentInstance
().getCurrentClientId();
   etc...
 }

-- Adam



On 2/28/07, Martin Marinschek <[EMAIL PROTECTED]> wrote:

Well, if the component is not passed in, you can't. The question is if
the method signature should be changed.

regards,

Martin

On 2/28/07, Danny Robinson <[EMAIL PROTECTED]> wrote:
> Sorry, I should have been clearer.  In the renderer code on the
server-side
> my component overrides the XhtmlRenderer.getOnclick() to insert some
custom
> javascript.  Within this method I'd like to be able to call
getClientId() on
> the component to grab the id.
>
> Currently I'm having to use eval combined with this.id to workaround
this
> issue, but it's not very clean.
>
> Danny
>
> On 2/27/07, Mike Kienenberger <[EMAIL PROTECTED]> wrote:
> >
> > Keeping in mind that I have barely a day's worth of practical
> > javascript experience, maybe this.id or something along those lines?
> >
> > On 2/27/07, Danny Robinson <[EMAIL PROTECTED]> wrote:
> > > anyone ;-)
> > >
> > > On 2/23/07, Danny Robinson <[EMAIL PROTECTED]> wrote:
> > > >
> > > > Guys,
> > > >
> > > > Any advice on how to easily retrieve the component ID from within
an
> > > > overridden method such as XhtmlRenderer.getOnclick().  The only
> > parameter
> > > > to this is FacesBean.Type, and not the component itself.
> > > >
> > > > Thanks,
> > > >
> > > > Danny
> > > >
> > > > --
> > > > Chordiant Software Inc.
> > > > www.chordiant.com
> > >
> > >
> > >
> > >
> > > --
> > > Chordiant Software Inc.
> > > www.chordiant.com
> > >
> >
>
>
>
> --
> Chordiant Software Inc.
> www.chordiant.com
>


--

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