Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
1.2.13-core
-
None
-
None
-
Running with MyFaces 1.2.8, Facelets 1.1.14 and Tomahawk 1.2.9
Description
Following a change from Trinidad 1.2.12 to 1.2.13, the tabs in the facelets of our project started to appear escaped as "#&9;"in the rendered page, instead of appearing as tabs as it was the case with the previous version.
The behaviour difference has been tested with a minimal test case for both 1.2.12 and 1.2.13.
What's following is the email exchange on the user mailing-list that lead to this bug report.
---------------------------------------------------------------------------
Stéphane,
Thanks for verifying the difference in behavior.
You are right - Mojarra and MyFaces allow the tab character to remain
unescaped.
Mojarra in particular allows 4 control characters to appear in the
output: LF, TAB, CR, FF
Trinidad allows only LF and CR. Given that XML spec explicitly allows
the tab character to appear
in the document (http://www.w3.org/TR/REC-xml/ - Legal characters are
tab, carriage return, line feed, and the legal characters of Unicode and
ISO/IEC 10646),
I think we should modify Trinidad to allow TAB characters to remain
unescaped.
Could you file a Trinidad JIRA for this issue? Although the fix would be
trivial, we want to make sure that there
are no objections to the change.
Regards,
Max
Stéphane Rondinaud wrote:
> Hello Max, hello all,
>
> Attached is the tests Max requested. All tests runs with an "mvn
> integration-test".
>
> The archive has 3 directories:
> - JSF RI + Facelets
> - Myfaces + Facelets
> - the same test with Trinidad 1.2.13 as before failing on the
> escaping integration test
>
> The RI/Myfaces + Facelets tests exhibit what I'd consider normal
> behaviour (i.e. tabs getting through as tabs, unescaped), the trinidad
> still escaping them as " ".
>
> Feel free to ask any additional tests you see fit,
>
> Best regards,
>
> Stéphane
>
>
>
>
> Le 17 mai 10 à 21:49, Max Starets a écrit :
>
>>
>> Stéphane,
>>
>> I believe Trinidad was always supposed to escape tab characters.
>>
>> Could you try your sample with MyFaces+Facelets and JSF RI+Facelets
>> without Trinidad?
>>
>> Thanks,
>> Max
>>
>> Stéphane Rondinaud wrote:
>>> Hello Max,
>>>
>>> The trouble when using a handful of framework is that when something
>>> breaks, the question is always to "which one is broken?". If I
>>> posted here, it's because Trinidad was the only framework that
>>> changed when the problem happened.
>>>
>>> You'll find attached a lightly modified version of the test case.
>>> It's a maven project again, and the integration test is illustrating
>>> the problem. It expects a trinidadRelease parameter as follow:
>>>
>>> mvn -DtrinidadRelease=12 integration-test
>>>
>>> => this results in no problem on the integration test
>>>
>>> mvn -DtrinidadRelease=13 integration-test
>>>
>>> => this results in a failure of the test checking the presence of
>>> " " in the output page
>>>
>>> Now it could be that up to and excluding release 13, Trinidad was
>>> incorrectly dealing with the tabs by passing them as is to the
>>> output page. Thus we'd have built our application on a false
>>> premise, thus the current problem?
>>>
>>> I suspect a little regression though: the revision I indicated in my
>>> previous post was modifying a serious bit of code in files named
>>> HtmlEscapes/XmlEscapes or something similar. I've got had time yet
>>> to delve into Trinidad code but the fact that between release 12 and
>>> 13 the behaviour changed strikes me as a more than probable cause of
>>> the problem.
>>>
>>> Best regards,
>>>
>>> Stéphane Rondinaud
>>>
>>> Le 17 mai 10 à 17:12, Max Starets a écrit :
>>>
>>>>
>>>> Hi Stéphane,
>>>>
>>>> I was able to reproduce your problem, but I believe this is more of
>>>> a Facelets issue.
>>>> The Facelets engine is using ResponseWriter.writeText() to render
>>>> all text between the tags
>>>> including the white space. Since the tab character is not a valid
>>>> HTML/XML character, Trinidad
>>>> is escaping it, as I believe it should given that it is being asked
>>>> to write text.
>>>>
>>>> Note that you would get ResponseWriter.write() being called if you
>>>> had a JSPX document.
>>>> I think your only choice is to replace the tab characters with
>>>> space characters.
>>>>
>>>> Is it only me, or do you guys think that Facelets/JSF2 should be
>>>> exposing SKIP_WHITE_SPACE context
>>>> parameter just like it does with SKIP_COMMENTS ?
>>>>
>>>> Max
>>>>
>>>> Stéphane Rondinaud wrote:
>>>>> Hello all,
>>>>>
>>>>> I needed to update to 1.2.13 to solve a problem with search engine
>>>>> bots generation NPEs, and just after the switch, I realized that
>>>>> some tabs present in the different facelets pages were getting
>>>>> through to the output page escaped as " ", ruining my attempt
>>>>> at having conforming webpages - the tabs being in the
>>>>> <head></head>, the validation fails...
>>>>>
>>>>> I traced back the problem to commit 886958 related to bug
>>>>> TRINIDAD-1655. What's bothering me is that I seem to be the only
>>>>> one to have this problem as I couldn't find any post on the
>>>>> mailing list about such a problem.
>>>>>
>>>>> You'll find attached a minimal maven project illustrating the
>>>>> problem. Launching it by "mvn jetty:run" and browsing to
>>>>> http://localhost:8080/TrinidadTest/ will return a page with some
>>>>> " " in place of regular tabs.
>>>>>
>>>>> One last thing: I tried to use a Selenium test to track the
>>>>> problem but it seems that the "getHtmlSource()" method replaces
>>>>> automatically the with regular tabs, thus rendering the test
>>>>> useless.
>>>>>
>>>>> Please feel free to request anything that could help finding the
>>>>> cause of the issue,
>>>>>
>>>>> Best regards,
>>>>>
>>>>> Stéphane Rondinaud