Custom tag that generates JavaScript for client side validation based
on the validation rules loaded by the ValidatorPlugIn
defined in the struts-config.xml file.
HTML_BEGIN_COMMENT
protected static final String HTML_BEGIN_COMMENT
The start of the HTML comment hiding JavaScript from old browsers.
HTML_END_COMMENT
protected static final String HTML_END_COMMENT
The end of the HTML comment hiding JavaScript from old browsers.
actionComparator
private static final Comparator actionComparator
A Comparator to use when sorting ValidatorAction objects.
bundle
protected String bundle
The servlet context attribute key for our resources.
cdata
protected String cdata
Hide JavaScript methods in a CDATA section for XHTML when "true".
defaultLocale
protected static Locale defaultLocale
This variable is no longer used.
The default locale on our server.
dynamicJavascript
protected String dynamicJavascript
The dynamic JavaScript objects will only be generated if this is set to "true".
formName
protected String formName
The name of the form that corresponds with the action name
in struts-config.xml. Specifying a form name places a
<script> </script> around the javascript.
htmlComment
protected String htmlComment
The JavaScript methods will enclosed with html comments if this is set to "true".
jsFormName
protected String jsFormName
formName is used for both Javascript and non-javascript validations.
For the javascript validations, there is the possibility that we will
be rewriting the formName (if it is a ValidatorActionForm instead of just
a ValidatorForm) so we need another variable to hold the formName just for
javascript usage.
lineEnd
protected static String lineEnd
The line ending string.
methodName
protected String methodName
This will be used as is for the JavaScript validation method name if it has a value. This is
the method name of the main JavaScript method that the form calls to perform validations.
page
protected int page
The current page number of a multi-part form.
Only valid when the formName attribute is set.
scriptLanguage
protected boolean scriptLanguage
Include language attribute in the <script> element. This property is
ignored in XHTML mode.
src
protected String src
The src attribute for html script element (used to include an external script
resource). The src attribute is only recognized
when the formName attribute is specified.
staticJavascript
protected String staticJavascript
The static JavaScript methods will only be printed if this is set to "true".
createActionList
private List createActionList(ValidatorResources resources,
Form form)
Get List of actions for the given Form.
- A sorted List of ValidatorAction objects.
createDynamicJavascript
private String createDynamicJavascript(ModuleConfig config,
ValidatorResources resources,
Locale locale,
Form form)
throws JspException
Generates the dynamic JavaScript for the form.
config
- resources
- locale
- form
-
createMethods
private String createMethods(List actions,
boolean stopOnError)
Creates the JavaScript methods list from the given actions.
actions
- A List of ValidatorAction objects.stopOnError
- If true, behaves like released version of struts 1.1
and stops after first error. If false, evaluates all validations.
doStartTag
public int doStartTag()
throws JspException
Render the JavaScript for to perform validations based on the form name.
escapeJavascript
private String escapeJavascript(String str)
Backslash-escapes the following characters from the input string:
", ', \, \r, \n.
This method escapes characters that will result in an invalid
Javascript statement within the validator Javascript.
str
- The string to escape.
- The string
s
with each instance of a double quote,
single quote, backslash, carriage-return, or line feed escaped
with a leading backslash.
escapeQuotes
private String escapeQuotes(String in)
getBundle
public String getBundle()
Sets the servlet context attribute key for our resources.
getCdata
public String getCdata()
Returns the cdata setting "true" or "false".
- String - "true" if JavaScript will be hidden in a CDATA section
getDynamicJavascript
public String getDynamicJavascript()
Gets whether or not to generate the dynamic
JavaScript. If this is set to 'true', which
is the default, the dynamic JavaScript will be generated.
getFormName
public String getFormName()
Gets the key (form name) that will be used
to retrieve a set of validation rules to be
performed on the bean passed in for validation.
getHtmlComment
public String getHtmlComment()
Gets whether or not to delimit the
JavaScript with html comments. If this is set to 'true', which
is the default, the htmlComment will be surround the JavaScript.
getJavascriptBegin
protected String getJavascriptBegin(String methods)
Returns the opening script element and some initial javascript.
getJavascriptEnd
protected String getJavascriptEnd()
Returns the closing script element.
getJavascriptStaticMethods
protected String getJavascriptStaticMethods(ValidatorResources resources)
getJsFormName
public String getJsFormName()
getMethod
public String getMethod()
Gets the method name that will be used for the Javascript
validation method name if it has a value. This overrides
the auto-generated method name based on the key (form name)
passed in.
getPage
public int getPage()
Gets the current page number of a multi-part form.
Only field validations with a matching page numer
will be generated that match the current page number.
Only valid when the formName attribute is set.
getScriptLanguage
public boolean getScriptLanguage()
Gets whether or not the <script> element will include the
language attribute.
- true if language attribute will be included.
getSrc
public String getSrc()
Gets the src attribute's value when defining
the html script element.
getStaticJavascript
public String getStaticJavascript()
Gets whether or not to generate the static
JavaScript. If this is set to 'true', which
is the default, the static JavaScript will be generated.
isXhtml
private boolean isXhtml()
Returns true if this is an xhtml page.
release
public void release()
Release any acquired resources.
renderJavascript
protected String renderJavascript()
throws JspException
Returns fully rendered JavaScript.
renderStartElement
protected String renderStartElement()
Constructs the beginning <script> element depending on XHTML
status.
setBundle
public void setBundle(String bundle)
Gets the servlet context attribute key for our resources.
setCdata
public void setCdata(String cdata)
Sets the cdata status.
setDynamicJavascript
public void setDynamicJavascript(String dynamicJavascript)
Sets whether or not to generate the dynamic
JavaScript. If this is set to 'true', which
is the default, the dynamic JavaScript will be generated.
setFormName
public void setFormName(String formName)
Sets the key (form name) that will be used
to retrieve a set of validation rules to be
performed on the bean passed in for validation.
Specifying a form name places a
<script> </script> tag around the javascript.
setHtmlComment
public void setHtmlComment(String htmlComment)
Sets whether or not to delimit the
JavaScript with html comments. If this is set to 'true', which
is the default, the htmlComment will be surround the JavaScript.
setJsFormName
public void setJsFormName(String jsFormName)
jsFormName
- The jsFormName to set.
setMethod
public void setMethod(String methodName)
Sets the method name that will be used for the Javascript
validation method name if it has a value. This overrides
the auto-generated method name based on the key (form name)
passed in.
setPage
public void setPage(int page)
Sets the current page number of a multi-part form.
Only field validations with a matching page numer
will be generated that match the current page number.
Only valid when the formName attribute is set.
setScriptLanguage
public void setScriptLanguage(boolean scriptLanguage)
Sets whether or not the <script> element will include the
language attribute.
setSrc
public void setSrc(String src)
Sets the src attribute's value when defining
the html script element. The src attribute is only recognized
when the formName attribute is specified.
setStaticJavascript
public void setStaticJavascript(String staticJavascript)
Sets whether or not to generate the static
JavaScript. If this is set to 'true', which
is the default, the static JavaScript will be generated.
stopOnError
private boolean stopOnError(ModuleConfig config)
Determines if validations should stop on an error.
config
- The ModuleConfig
used to lookup the
stopOnError setting.
true
if validations should stop on errors.