Hello everybody,

Right now, some components require you to include some _javascript_ libraries in your app, and to reference those libraries in your page's header.
Just for your example webapp, the header looks like that :

    <!-- JSCook Menu -->
  <script language="_javascript_" src="" type="text/_javascript_"></script>
  <script language="_javascript_" src=""
  <link rel="stylesheet" href="" type="text/css">
  <script language="_javascript_" src=""
  <link rel="stylesheet" href="" type="text/css">
  <script language="_javascript_" src=""
  <link rel="stylesheet" href="" type="text/css">
  <script language="_javascript_" src=""
  <link rel="stylesheet" href="" type="text/css">

  <!-- JSCalendar -->
  <script language="_javascript_" src="" type="text/_javascript_"></script>
  <link rel="stylesheet" href="" type="text/css">
  <link rel="stylesheet" href="" type="text/css">

  <!-- JSPopup -->
  <script language="_javascript_" src="" type="text/_javascript_"></script>

I'm now working on a new component that is _javascript_ intensive too, and that would require the include of at least 5 other .js files.

I think we should make this transparent to the user by :
  • Including the scripts/css/whatever required in the myfaces.jar file as resources. So, we are sure we always have the .js file's version that works, and the developer just needs to include the myfaces lib. (this will grow a bite the size of the jar though).
  • Have the components load the script/css/whatever in a standard way so that the page's developer doesn't need to bother, and so that the script/css/... is only included once in the page.
So, starting to think about a solution for this, here is my first idea :

- Have all those scripts/css/... as resources

- Make an additional servlet that the webapp developper would include in his web.xml declarations, and that would be invoqued like :
    http://my.webserver.com/webapp/myFacesRessource?name=jspopup.js
This is the only thing the webapp developper would have to do (declare the servlet), but I don't see how we could avoid that without writing the scripts/css/... into the page.
Writing the scripts/css/... into the page would be bad for caching, and wouldn't allow us to use standard images with this facility.
- Have a facility so that the component's renderer can call something like includeRessourceScriptLibrary(facesContext,"jspopup/JSPopup.js") (similar helper for css, ...), and the code calling the above servlet is automatically included in the page.

Any thoughts on this ?

Sylvain.

Reply via email to