myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jeff Bischoff (JIRA)" <...@myfaces.apache.org>
Subject [jira] Created: (TOMAHAWK-914) t:dataTable style attributes don't work with Facelets
Date Wed, 28 Feb 2007 20:53:50 GMT
t:dataTable style attributes don't work with Facelets
-----------------------------------------------------

                 Key: TOMAHAWK-914
                 URL: https://issues.apache.org/jira/browse/TOMAHAWK-914
             Project: MyFaces Tomahawk
          Issue Type: Bug
          Components: Extended Datatable
    Affects Versions: 1.1.4-SNAPSHOT, 1.1.5-SNAPSHOT
         Environment: MyFaces Core 1.1.5, Facelets 1.1.11
            Reporter: Jeff Bischoff
         Attachments: HtmlDataTable.java.diff, JSFAttr.java.diff

Problem: style and styleClass attributes on t:dataTable do not work in Facelets due to use
of fully-qualified names in the map.

Fix: Patch attached to resolve this by changing the names as stored in the map. Includes code
to accept hacks based on the old behaviour, but warns that it is now deprecated.

Bonus: Also includes fix for problem in Facelets where the EL can not return a null style.
This is due to changes in the EL spec, and prevents the former (very useful) style rollover
behaviour. Fix works by converting any empty String returned by the EL in these Style attributes
into null. (Reverse Coercion)

Background:

After converting my application from JSP to Facelets, I set out to make my "rowStyleClass"
attribute on t:dataTable work like it used to.

First, I had to get the attribute working in Facelets. With considerable discussion on the
user list (see [1] and [2]) and a lot of help from Mike, I think we've identified some pretty
simple code changes to enable this and other similar attributes. I plan to introduce a patch
for this, probably tomorrow.

What happened next was that during testing of this change, I could confirm that the attribute
did indeed now work, but I was baffled by unexpected behaviour. My EL expression which had
previously returned null in certain situations was now returning the empty String. I went
to Facelets list for some clarification on this (see [3]) and it turned out to be a requirement
of the new EL spec to coerce the nulls into empty string.

Getting an empty String instead of null for this ValueBinding lookup creates a problem because
the extended dataTable treats a null value differently and goes looking at the more standard
style attributes like rowClasses. With an empty string returned, it assumes it needs to look
no further. As a user, there is no way for me to specify that under certain conditions, it
should fallback to the other style attributes, e.g. rowClasses.

The best fix we have collectively come up with so far is to coerce the empty string back into
a null in the dataTable, so that the renderer does the right thing. I don't see too much downside
to this approach, as an empty style string has no relevance in CSS. However, I feel a proposed
change like this requires extra discussion before making a decision on it. It's another one
of those situation where we have to decide how we want to handle unexpected results due to
changes in the newer specs. 

[1] https://facelets.dev.java.net/servlets/ReadMsg?list=users&msgNo=6875
[2] http://www.nabble.com/Re%3A-Facelets-support-for-a-Tomahawk-dataTable-trick--tf3236491.html
[3] https://facelets.dev.java.net/servlets/ReadMsg?list=users&msgNo=6941 

Regards,

Jeff Bischoff
Kenneth L Kurz & Associates, Inc. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message