Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Won't Fix
-
1.3.1 Release
-
None
-
None
-
Any
Description
Exposing the JsFunction property in ValidatorAction would make it possible for other tools to include Javascript routines as external scripts, inside of inline Javascript in an HTML page. This would reduce the size of pages containing client-side validation and the overall size of content transferred from server to browser.
Shale commons validator integration uses commons validator to provide both client side and server side mapping. When the JSF renderer writes the validation Javascript code, it looks up the ValidatorAction for each validation routine. It then inserts the Javascript inline using ValidatorAction.getJavascript(). Since this code never changes and is likely to be used multiple times, I would like to instead insert something like this:
<script src="/weblets/validator/validateEmail.js" />
I can almost do this with Shale commons validator and Weblets, but I need to get the fully qualified resource name from the ValidatorAction, i.e. JsFunction. I can then map the resource name (org.apache.commons.validator.javascript.validateEmail) to a URL ("/weblets/validator/validateEmail.js") using Weblets.
The entire change required is adding:
/**
- Gets the fully qualified class path of the Javascript function.
- This is optional and can be used instead of the Javascript property.
- @return The Javascript function's fully qualified class path, or
- null if this property has not been set.
*/
public String getJsFunction() { return jsFunction; }
to ValidatorAction.java.
After the change above, I am able output <script src=""> tags in Shale commons validator.
The change could also be used in other web frameworks to do the same thing.