1 16 package org.apache.cocoon.faces.taglib; 17 18 import org.apache.cocoon.taglib.TagSupport; 19 20 import org.apache.cocoon.faces.FacesUtils; 21 import org.xml.sax.Attributes ; 22 import org.xml.sax.SAXException ; 23 24 import javax.faces.component.EditableValueHolder; 25 import javax.faces.validator.Validator; 26 27 33 public class ValidatorTag extends TagSupport { 34 35 private String validatorId; 36 37 public String getValidatorId() { 38 return this.validatorId; 39 } 40 41 public void setValidatorId(String validatorId) { 42 this.validatorId = validatorId; 43 } 44 45 public int doStartTag(String namespaceURI, String localName, String qName, Attributes atts) 46 throws SAXException { 47 UIComponentTag tag = FacesUtils.findParentUIComponentTag(this); 48 if (tag == null) { 49 throw new SAXException ("Tag <" + getClass().getName() + "> have to be nested within a UIComponentTag"); 50 } 51 52 if (!tag.getCreated()) { 53 return 0; 54 } 55 56 Validator validator = createValidator(); 57 ((EditableValueHolder)tag.getComponentInstance()).addValidator(validator); 58 59 return SKIP_BODY; 60 } 61 62 65 protected Validator createValidator() { 66 final UIComponentTag tag = FacesUtils.findParentUIComponentTag(this); 67 String validatorIdVal = (String ) tag.evaluate(validatorId); 68 return tag.getApplication().createValidator(validatorIdVal); 69 } 70 71 public void recycle() { 72 super.recycle(); 73 this.validatorId = null; 74 } 75 } 76 | Popular Tags |