Well, the attributes map in the RI might do the ValueBinding checking for you.


On Wed, 5 Jan 2005 18:42:39 -0800 (PST), Ray Clark <[EMAIL PROTECTED]> wrote:
> 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
> 


-- 
-Heath Borders-Wing
[EMAIL PROTECTED]

Reply via email to