[ 
http://issues.apache.org/click/browse/CLK-501?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=11733#action_11733
 ] 

Bob Schellink commented on CLK-501:
-----------------------------------

I also thought about leveraging onRender, however users can skip this phase by 
returning false from an action listener.

At least 3 approaches exist to add elements to the HeadElements List. 

# in the Page/Control constructor
# overriding getHeadElements using lazy loading
# in onInit and onProcess. However in this case the HeadElements List must be 
nullified in the onDestroy callback. This ensures no memory leaks exist with 
stateful pages

> The Container controls then iterate through their children doing the same

My current approach is not to let the Container return their child control Head 
elements. Instead PageImports recursively process each Control. The reason that 
each Control and Container return only their own List of Head Elements, is to 
introduce the ability to dynamically add/remove a Control's Javascript and CSS 
at runtime.

Introducing Element will also raise the question of how it ties in with 
Control. Should AbstractControl extend Element?

Another thing to keep in mind is that TitleElement and CacheElement can also be 
supported through a BorderPage and custom Velocity variables instead of 
HeadElements.


> Add first class support for HTML Head resources such as Javascript and CSS
> --------------------------------------------------------------------------
>
>                 Key: CLK-501
>                 URL: http://issues.apache.org/click/browse/CLK-501
>             Project: Click
>          Issue Type: New Feature
>          Components: core
>            Reporter: Bob Schellink
>            Assignee: Bob Schellink
>             Fix For: 2.1.0
>
>
> Currently Click supports HTML imports by overriding the method 
> #getHtmlImports. 
> This method is string based which makes it difficult to support advanced 
> features such as templating, conditional imports, resource versioning etc.
> This feature request proposes to introduce first class HTML header resource 
> classes including Javascript, JavascriptImport, CssImport and Css.
> Further a new method should be added to the Control interface: 'public List 
> getHtmlHeaders' which returns a list of the Page or Control's HTML HEAD 
> entries.
> This makes it possible to modify the Javascript and CSS imports without 
> overriding a Control.

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

Reply via email to