Ugh. Gmail was a little deceptive about whether it was really sending my message. In any case, the content got better each try, so read the 3rd one and ignore the other two :-)
On 2/21/07, Mike Kienenberger <[EMAIL PROTECTED]> wrote:
Yes, the problem is that JSFAttr.ROW_STYLECLASS_ATTR = "org.apache.myfaces.dataTable.ROW_STYLECLASS" instead of "rowStyleClass" Thus, jsp saves "rowStyleClass" tag values under "org.apache.myfaces.dataTable.ROW_STYLECLASS" while facelets stores them under "rowStyleClass". http://issues.apache.org/jira/browse/TOMAHAWK-523 http://issues.apache.org/jira/browse/TOMAHAWK-35 Again, if the tag file were calling the concrete getters and setters, there'd be no problem. But it's storing this value as a generic attribute. Note also that your patch will have to provide backward compatiblity as per my comment at the end of this issue: http://issues.apache.org/jira/browse/TOMAHAWK-47 This does show what the workaround is, though. Use this in your page code: <t:dataTable ... org.apache.myfaces.dataTable.ROW_STYLECLASS="#{tableData.selectedRowIndex == rowIndex ? 'highlightRow' : null}" value=....> It'd probably be good to get this in the facelets wiki for all of the fully-qualified (or oddly-named) attributes listed in org.apache.myfaces.renderkit.JSFAttr. On 2/21/07, Jeff Bischoff <[EMAIL PROTECTED]> wrote: > I have found the difference in behaviour between Facelets and JSP to > stem from different results in code from the following class: > > org.apache.myfaces.component.html.ext.HtmlDataTable > > In the method getRowStyleClass(), the following line is called: > > ValueBinding vb = getValueBinding(JSFAttr.ROW_STYLECLASS_ATTR); > > > In JSP, this results in a valuebinding with the String that I set (e.g. > #{tableData.selectedRowIndex == rowIndex ? 'highlightRow' : null}). > > In JSP, this valuebinding correctly returns either 'highlightRow' or > 'null' as the value. > > In Facelets, this valuebinding is null. > > Okay, why would this valuebinding be null in Facelets? I could have > understood it failing to properly evaluate the valuebinding due to some > missing variable like "rowIndex", but to have the entire expression null? > > Anybody got any ideas? I'm guessing this has something to do with > Facelets having a different EL implementation? > > Regards, > > Jeff Bischoff > Kenneth L Kurz & Associates, Inc. > > Jeff Bischoff wrote: > > I'll resume looking at this next week. > > > > I have some clues from putting debugging output into the source and > > building locally. I need more time to assess it. > > > > So far, I don't see evidence to support your hunch. The tag handler > > really isn't doing anything special, just a simple: > > > > setStringProperty(component, JSFAttr.ROW_STYLECLASS_ATTR, _rowStyleClass); > > > > We'll see, I need to look at it more. I think though, my problem may be > > that "rowIndexVar" doesn't get set in time. > > > > Regards, > > > > Jeff Bischoff > > Kenneth L Kurz & Associates, Inc. > > > > Jeff Bischoff wrote: > >> Thanks for the assessment Mike. Fortunately I did just finish > >> converting the last few pages of my application to facelets, so > >> hopefully I'll have time to give it a shot next week. I'm going to > >> spend the next half hour or so looking into this issue, for starters. > >> > >> This is not a huge thing, but it's really the only thing that "broke" > >> when switching to facelets. So I'd really like to knock it off. > >> > >> Mike Kienenberger wrote: > >> > Jeff, > >> > > >> > This is really straight-forward stuff. Two hours should be more than > >> > sufficient. > >> > I'd guess it'd take about 5 minutes to cut&paste a similar > >> > getter/setter pair, then replace the attribute name with the new > >> > attribute name. > >> > > >> > The less-obvious part is going to be going into the renderer and > >> > changing the references to the generic attribute (map entry) into a > >> > concrete method call. > >> > > >> > The longest part is going to be testing the changes. > >> > > >> > On 2/15/07, Jeff Bischoff <[EMAIL PROTECTED]> wrote: > >> >> (I've moved this thread to the myfaces-users list, due to it being > >> >> identified as a Tomahawk bug) > >> >> > >> >> Heh, Mike do you ever get tired of answering my questions? ;) > >> >> > >> >> I looked through MyFaces JIRA, and the closest issue I found was > >> >> TOMAHAWK-523. The only difference is that they were trying to use EL > >> >> based off the "var" attribute, whereas I am attempting to use the > >> >> "rowIndexVar". However, this might be the same issue. > >> >> > >> >> That issue is marked "patch available", but there are no files > >> attached. > >> >> I see that one of your comments on the thread indicates that the > >> patch > >> >> provided wasn't sufficient... There were also user comments there > >> about > >> >> it affecting non-facelets, or being fixed in the trunk - both > >> statements > >> >> which are definately not true for my issue. > >> >> > >> >> How involved do you think the fix for this would be? Could it be > >> coded > >> >> in a couple of hours? Should I attempt to write a patch to fix this? > >> >> > >> >> [1] http://issues.apache.org/jira/browse/TOMAHAWK-523 > >> >> > >> >> Mike Kienenberger wrote: > >> >> > I think there are already bug reports open on this for Tomahawk, > >> but > >> >> > you should make sure that this is the case, opening one if > >> necessary. > >> >> > > >> >> > My guess it that the jsp tag handler for t:dataTable is not using > >> >> > standard pass-through code to initialize the rowStyleClass > >> attribute > >> >> > on the t:dataTable component. > >> >> > > >> >> > The fix would be to rewrite the component and tag handler so > >> that the > >> >> > tag handler isn't doing anything beyond passing the arguments > >> through > >> >> > unchanged. > >> >> > > >> >> > On 2/15/07, Jeff Bischoff <[EMAIL PROTECTED]> wrote: > >> >> >> Greetings, > >> >> >> > >> >> >> There is a CSS trick with the Tomahawk extended dataTable that > >> allows > >> >> >> the selected row to be highlighted (or some similar things). It > >> works > >> >> >> great in JSP, and has been passed around on the myfaces mailing > >> >> list and > >> >> >> wiki for some time. The trick goes something like this: > >> >> >> > >> >> >> <t:dataTable id="TheDataTable" > >> >> >> ... > >> >> >> rowClasses="oddRow,evenRow" > >> >> >> rowStyleClass="#{dataTableBacking.selectedRowIndex == > >> rowIndex ? > >> >> >> 'highlightRow' : null}" > >> >> >> rowIndexVar="rowIndex" > >> >> >> .../> > >> >> >> > >> >> >> Unfortunately, when I recently converted my application from > >> JSP to > >> >> >> Facelets, this trick no longer works. (Fortunately, this is one > >> of the > >> >> >> only things that stopped working!) I have heard from other > >> users on > >> >> the > >> >> >> myfaces mailing list who also can't get this to work under > >> facelets. > >> >> >> Apparently, the "rowIndex" variable that t:dataTable creates > >> can't be > >> >> >> resolved in the rowStyleClass expression, even though it works for > >> >> >> components who are children of the table. > >> >> >> > >> >> >> Any idea why this would be different under Facelets? I am > >> thinking of > >> >> >> opening a JIRA issue on myfaces project, since this is their > >> custom > >> >> >> component, but wanted to bounce for ideas here first. Any > >> suggested > >> >> >> workarounds? > >> >> >> > >> >> >> Regards, > >> >> >> > >> >> >> Jeff Bischoff > >> >> >> Kenneth L Kurz & Associates, Inc. > >> >> >> > >> >> >> > >> >> >> > >> >> >> > >> --------------------------------------------------------------------- > >> >> >> To unsubscribe, e-mail: [EMAIL PROTECTED] > >> >> >> For additional commands, e-mail: [EMAIL PROTECTED] > >> >> >> > >> >> >> > >> >> > > >> >> > > >> --------------------------------------------------------------------- > >> >> > To unsubscribe, e-mail: [EMAIL PROTECTED] > >> >> > For additional commands, e-mail: [EMAIL PROTECTED] > >> >> > > >> >> > > >> >> > > >> >> > > >> >> > >> >> > >> >> --------------------------------------------------------------------- > >> >> To unsubscribe, e-mail: [EMAIL PROTECTED] > >> >> For additional commands, e-mail: [EMAIL PROTECTED] > >> >> > >> >> > >> > > >> > --------------------------------------------------------------------- > >> > To unsubscribe, e-mail: [EMAIL PROTECTED] > >> > For additional commands, e-mail: [EMAIL PROTECTED] > >> > > >> > > >> > > >> > > >> > >> > >> > >> > >> > > > > > > > > > > > > >

