Steven James created WW-4319:
--------------------------------

             Summary: struts2-jquery-plugin custom tag templates broken
                 Key: WW-4319
                 URL: https://issues.apache.org/jira/browse/WW-4319
             Project: Struts 2
          Issue Type: Bug
    Affects Versions: 2.3.16.1
         Environment: Struts 2.3.16.1, struts2-jquery-plugin 3.7.0, tomcat v7.0
            Reporter: Steven James


Hi,
I am developing an application which has been predominantly written with 
Struts2 version 2.3.15.3 and the struts2-jquery-plugin version 3.6.1.
I have recently upgraded to Struts2 version 2.3.16.1 and struts2-jquery-plugin 
version 3.7.0.
The application has used the css_xhtml theme throughout, defined in struts.xml.
Since the upgrade, the HTML markup of the struts2-jquery-plugin ( sj: ) 
components has been adversly affected.
I have debugged the application and found that the issue is caused by the 
changes made to themes under WW-4145.
The situation appears to be this:
The struts2-jquery-plugin has implemented custom tags for their components and 
these classes will return the value of 'jquery' in response to the getTheme() 
method. They do appear to correctly store a 'parentTheme' parameter with the 
correct value (in my case from the parent form element) of 'css_xhtml'.
The struts2-jquery-plugin custom templates are successfully found on the 
templates/jquery path, but some of them contain 'include' statements, for 
example, the datepicker.ftl contains the following snippet:
 {code:xml}
<#if parameters.parentTheme == 'css_xhtml'>
<#include "/${parameters.templateDir}/css_xhtml/controlheader.ftl" />
</#if>
{code}
So, at this point, all is well, the correct controlheader.ftl template for the 
css_xhtml theme is found and included, however this template (now) contains the 
following include:
{code:xml} 
<#include 
"/${parameters.templateDir}/${parameters.expandTheme}/controlheader-core.ftl">
{code}
And this is where it starts to go wrong. The 
{noformat}${parameters.expandTheme}{noformat} resolves to '~~~jquery' and, 
after reading the WW-4145 change info, I understand that this will cause the 
ThemeManager to load the template from the parent theme as defined in the 
theme.properties file. This, in the case of the struts2-jquery-plugin, is 
defiend as 'xhtml' and NOT 'css_xhtml' as discovered from the parent form 
component. Consequently, the wrong controlheader-core.ftl template is included, 
and the resulting HTML includes incorrect <tr> and <td> tags which ultimately 
break the page.
 
Other than hacking the templates, I cannot see a satisfactory way of resolving 
this problem, so any assistance would be gratefully received.
 
Thanks
Steve



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to