001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, 013 * software distributed under the License is distributed on an 014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 * KIND, either express or implied. See the License for the 016 * specific language governing permissions and limitations 017 * under the License. 018 */ 019 020 package org.apache.myfaces.tobago.taglib.component; 021 022 import org.apache.myfaces.tobago.apt.annotation.Tag; 023 import org.apache.myfaces.tobago.apt.annotation.TagAttribute; 024 import org.apache.myfaces.tobago.validator.SubmittedValueLengthValidator; 025 026 import javax.faces.validator.Validator; 027 import javax.faces.webapp.ValidatorTag; 028 import javax.servlet.jsp.JspException; 029 030 /** 031 * Register an SubmittedValueLengthValidator instance on the UIComponent 032 * associated with the closest parent UIComponent custom action. 033 * The standard LengthValidator validate the length on the converted value.toString() 034 * not on the submitted value. Sometime you need to check the length of the submitted value. 035 */ 036 @Tag(name = "validateSubmittedValueLength") 037 public class SubmittedValueLengthValidatorTag extends ValidatorTag { 038 039 private static final long serialVersionUID = 6777040780038715924L; 040 041 private String minimum; 042 private String maximum; 043 044 public String getMinimum() { 045 return minimum; 046 } 047 048 @TagAttribute() 049 public void setMinimum(String minimum) { 050 this.minimum = minimum; 051 } 052 053 public String getMaximum() { 054 return maximum; 055 } 056 057 @TagAttribute() 058 public void setMaximum(String maximum) { 059 this.maximum = maximum; 060 } 061 062 protected Validator createValidator() throws JspException { 063 setValidatorId(SubmittedValueLengthValidator.VALIDATOR_ID); 064 SubmittedValueLengthValidator validator = (SubmittedValueLengthValidator) super.createValidator(); 065 if (minimum != null) { 066 try { 067 validator.setMinimum(Integer.parseInt(minimum)); 068 } catch (NumberFormatException e) { 069 // ignore 070 } 071 } 072 if (maximum != null) { 073 try { 074 validator.setMaximum(Integer.parseInt(maximum)); 075 } catch (NumberFormatException e) { 076 // ignore 077 } 078 } 079 return validator; 080 } 081 082 083 public void release() { 084 super.release(); 085 minimum = null; 086 maximum = null; 087 } 088 }