Thanks Heath.

I just had time again to get back to this.  I have a
new solution :)

My renderer used to have this code:

String colSpan = (String)
rptTableCol.getAttributes().get("colSpan");
if (colSpan != null) {
        writer.writeAttribute("colSpan", colSpan, null);
}

That code worked fine in JSF 1.1.01, but didn't work
with myFaces 1.0.7.  Well, I now have new code in the
renderer that works.  The renderer now looks like
this:

ValueBinding vb =
rptTableCol.getValueBinding("colSpan");
String colSpan = null;
if (vb == null) {
        colSpan = (String)
rptTableCol.getAttributes().get("colSpan");
} else {
        colSpan = (String) vb.getValue(context);
}
if (colSpan != null) {
        writer.writeAttribute("colSpan", colSpan, null);
}

So to get this to work the renderer now has to check
to see if this attribute has value binding or not. 
Then get the value appropriately.  Now why would there
be a difference between JSF 1.1.01 and myFaces?

Anyway, how does this solution look to you? :)

Thanks,
Ray

--- Heath Borders <[EMAIL PROTECTED]> wrote:

> Adding that line really doesn't go along with the
> spirit of
> valueBindings, though.  Ideally, you want the
> ValueBinding to be
> evaluated as late as necessary, preferably just
> before the UIComponent
> is rendered (which is when most ValueBindings are
> referenced, in the
> renderer).
> 
> 
> On Sun, 2 Jan 2005 16:41:55 -0800 (PST), Ray Clark
> <[EMAIL PROTECTED]> wrote:
> >  
> > Well, I played around and I found a solution to my
> value binding problem. 
> >   
> > In the tag I have a setValueBinding method that I
> copied from the Core
> > JavaServerFaces book.  It looks like this now: 
> >   
> > public void setValueBinding(UIComponent component,
> String attributeName, 
> >           String attributeValue) { 
> >   
> >      FacesContext context =
> FacesContext.getCurrentInstance(); 
> >      Application app = context.getApplication(); 
> >      ValueBinding.vb =
> app.createValueBinding(attributeValue); 
> >      component.setValueBinding(attributeName, vb);
> 
> >      // Adding this line of code makes it work 
> >      component.getAttributes().put(attributeName,
> vb.getValue(context)); 
> > } 
> >   
> > I noticed that the Renderer was getting the value
> from the
> > component.getAttributes.  So I added the put and
> it started working.  I'm
> > not sure if this is what should have been done,
> but it certainly does the
> > job.  The tag extends the UIComponentTag.  Since
> this 1 line fixed the
> > problem I didn't think anyone would need any other
> code.  Let me know if you
> > do though. 
> >   
> > As I said, this worked fine with JSF 1.1.01
> without the 1 line that I had to
> > add. 
> >   
> > Hope this helps someone to figure out what the
> problem was. 
> >   
> > Thanks, 
> > Ray
> > 
> > 
> > Heath Borders <[EMAIL PROTECTED]> wrote: 
> > Date: Sun, 2 Jan 2005 11:22:46 -0600
> > From: Heath Borders 
> > To: Ray Clark 
> > Subject: Re: ValueBinding
> > 
> > 
> > Make sure to let us know the answer if you find
> it. :)
> > 
> > 
> > On Sun, 2 Jan 2005 08:41:03 -0800 (PST), Ray Clark
> wrote:
> > > Thank you for your response. I need to trim down
> my
> > > code so that it centers on the problem before I
> post
> > > it. When I get that done I'll post. It may be a
> > > couple of days. Who knows, I may stumble across
> the
> > > answer in the meantime.
> > > 
> > > Thanks,
> > > Ray
> > > 
> > > --- Heath Borders wrote:
> > > 
> > > > Send your code for the getter/setter in your
> > > > component, and the jsp
> > > > code that you're drives the whole thing. The
> > > > problem must be there
> > > > then.
> > > >
> > > >
> > > > On Sat, 1 Jan 2005 12:13:32 -0800 (PST), Ray
> Clark
> > > > wrote:
> > > > > I just noticed a problem with my value
> binding
> > > > under myface. My value
> > > > > binding works the way that it is coded with
> JSF
> > > > 1.1.01, but doesn't work
> > > > > with myfaces 1.0.7. I was wondering if
> anyone
> > > > could tell me the right way
> > > > > to code this for myfaces?
> > > > >
> > > > > Here is my code that works for JSF 1.1.01. I
> got
> > > > it right out of the Core
> > > > > JavaServerFaces book:
> > > > >
> > > > > public void setProperties(UIComponent
> component) {
> > > >
> > > > > super.setProperties(component);
> > > > >
> > > > > setString(component, "rowSpan", rowSpan);
> > > > > }
> > > > > public void setString(UIComponent component,
> > > > String attributeName, String
> > > > > attributeValue) {
> > > > > if (attributeValue == null) {
> > > > > return;
> > > > > } else {
> > > > > if (isValueReference(attributeValue)) {
> > > > > setValueBinding(component,
> > > > attributeName, attributeValue);
> > > > > } else {
> > > > >
> > > > component.getAttributes().put(attributeName,
> > > > attributeValue);
> > > > > }
> > > > > }
> > > > > }
> > > > > public void setValueBinding(UIComponent
> component,
> > > > String attributeName,
> > > > > String attributeValue) {
> > > > > FacesContext context =
> > > > FacesContext.getCurrentInstance();
> > > > > Application app = context.getApplication();
> > > > > ValueBinding vb =
> > > > app.createValueBinding(attributeValue);
> > > > > component.setValueBinding(attributeName,
> vb);
> > > >
> > > > > }
> > > > >
> > > > > Then in the renderer for this tag I have:
> > > > >
> > > > > String rowSpan = (String)
> > > > rptTableCol.getAttributes().get("rowSpan");
> > > > >
> > > > > this always returns null. But the
> attributeValue
> > > > in the tag has the right
> > > > > code in it. So I don't understand why this
> works
> > > > with JSF 1.1.01 and not
> > > > > myfaces 1.0.7. Was this a bug in the version
> of
> > > > the RI that myfaces 1.0.7
> > > > > is using?
> > > > >
> > > > > Any typos are because I typed it in. I can't
> cut
> > > > and paste my code into
> > > > > this pc (long story lol). The value
> > > > >
> > > > > Thanks,
> > > > > Ray
> > > > >
> > > > >
> > > > >
> > > > > ________________________________
> > > > > Do you Yahoo!?
> > > > > Yahoo! Mail - Helps protect you from nasty
> > > > viruses.
> > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > -Heath Borders-Wing
> > > > [EMAIL PROTECTED]
> > > >
> > > 
> > > 
> > > __________________________________
> > > Do you Yahoo!?
> > > Meet the all-new My Yahoo! - Try it today!
> > > http://my.yahoo.com
> > > 
> > > 
> > 
> > 
> > -- 
> > -Heath Borders-Wing
> > [EMAIL PROTECTED]
> 
=== message truncated ===


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

Reply via email to