com.ibm.xsp.validator
Class ExpressionValidator

java.lang.Object
  extended by com.ibm.xsp.complex.ValueBindingObjectImpl
      extended by com.ibm.xsp.validator.AbstractValidator
          extended by com.ibm.xsp.validator.ExpressionValidator
All Implemented Interfaces:
ComponentBindingObject, ValueBindingObject, ClientSideValidator, java.util.EventListener, javax.faces.component.StateHolder, javax.faces.validator.Validator

public class ExpressionValidator
extends AbstractValidator
implements ValueBindingObject, ClientSideValidator

Extends the standard expression validator to add support for automatic client-side validation and computed expressions on it's properties. Corresponds to the xp:validateExpression tag


Field Summary
 
Fields inherited from interface javax.faces.validator.Validator
NOT_IN_RANGE_MESSAGE_ID
 
Constructor Summary
ExpressionValidator()
           
 
Method Summary
 java.lang.String generateClientSideValidation(javax.faces.context.FacesContext context, javax.faces.component.UIComponent component)
          Generate client side validation, a snippet of browser JavaScript in a single line, creating an instance of a Validator object matching the format described in xspClientDojo.js, the attachValidator function.
 java.lang.String getClientScript()
          script which is executed on the client.
 java.lang.String getInvalidMessage()
          Unlike server-side validators which display different error messages depending on the exact way that validation fails, client side validators usually have only one error message.
 boolean isExpression()
          checks to see if an server side expression has been set
 void restoreState(javax.faces.context.FacesContext context, java.lang.Object state)
           
 java.lang.Object saveState(javax.faces.context.FacesContext context)
           
 void setClientScript(java.lang.String clientScript)
          Sets the Script which is executed on the client.
 void setExpression(boolean expression)
           Set the value of the expression property.
 void validate(javax.faces.context.FacesContext context, javax.faces.component.UIComponent component, java.lang.Object value)
          Perform the correctness checks implemented by this Validator against the specified UIInput.
 
Methods inherited from class com.ibm.xsp.validator.AbstractValidator
addInputInvalidMessage, createNullContextOrComponentEx, createValidatorEx, getInvalidRangeMessage, getMessage, getNotCorrectTypeMessage, setMessage
 
Methods inherited from class com.ibm.xsp.complex.ValueBindingObjectImpl
getComponent, getFacesContext, getValueBinding, isTransient, setComponent, setTransient, setValueBinding
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.ibm.xsp.complex.ValueBindingObject
getValueBinding, setValueBinding
 

Constructor Detail

ExpressionValidator

public ExpressionValidator()
Method Detail

validate

public void validate(javax.faces.context.FacesContext context,
                     javax.faces.component.UIComponent component,
                     java.lang.Object value)
              throws javax.faces.validator.ValidatorException

Perform the correctness checks implemented by this Validator against the specified UIInput. If any violations are found:

Specified by:
validate in interface javax.faces.validator.Validator
Parameters:
context - FacesContext for the request we are processing
component - UIInput we are checking for correctness
value - to be validated
Throws:
java.lang.NullPointerException - if context or component is null
javax.faces.FacesException
javax.faces.validator.ValidatorException

getInvalidMessage

public java.lang.String getInvalidMessage()
Description copied from interface: ClientSideValidator
Unlike server-side validators which display different error messages depending on the exact way that validation fails, client side validators usually have only one error message. For example, you might have server-side messages "Value is less than minimum {0}" and "Value is greater than maximum {1}", but client-side you would only have one message "Value is not in the allowed range {0} to {1}".

This method may return different values depending on the configuration of the validator.

Specified by:
getInvalidMessage in interface ClientSideValidator
Returns:
message to display when the value is invalid.

isExpression

public boolean isExpression()
checks to see if an server side expression has been set

Returns:
true if expression is set

setExpression

public void setExpression(boolean expression)

Set the value of the expression property.


getClientScript

public java.lang.String getClientScript()
script which is executed on the client.

Returns:
script

setClientScript

public void setClientScript(java.lang.String clientScript)
Sets the Script which is executed on the client.

Set the value of the clientScript property.


saveState

public java.lang.Object saveState(javax.faces.context.FacesContext context)
Specified by:
saveState in interface javax.faces.component.StateHolder
Overrides:
saveState in class AbstractValidator

restoreState

public void restoreState(javax.faces.context.FacesContext context,
                         java.lang.Object state)
Specified by:
restoreState in interface javax.faces.component.StateHolder
Overrides:
restoreState in class AbstractValidator

generateClientSideValidation

public java.lang.String generateClientSideValidation(javax.faces.context.FacesContext context,
                                                     javax.faces.component.UIComponent component)
                                              throws java.io.IOException
Description copied from interface: ClientSideValidator
Generate client side validation, a snippet of browser JavaScript in a single line, creating an instance of a Validator object matching the format described in xspClientDojo.js, the attachValidator function.

The file xspClientDojo.js is reference in the source of every XPage. The version with comments is installed with Designer under the Data/domino/js folder, in a file named xspClientDojo.js.uncompressed.js.

The constructor of the Validator object should be passed any values needed to perform the validation (e.g. for a range validator the minimum and maximum values would be included). The translated error message to display if the error occurs should be passed to the validator too. Generally the server-side validators translate a default error message and allow the page designer to override the default in a "message" property.

Specified by:
generateClientSideValidation in interface ClientSideValidator
Parameters:
context - The current context.
component - The control whose value will be validated, usually a UIInput.
Returns:
snippet of browser JavaScript to create the Validator object.
Throws:
java.io.IOException