List of usage examples for org.apache.commons.validator Field getProperty
public String getProperty()
From source file:jp.terasoluna.fw.web.struts.form.FieldChecksEx.java
/** * wtB?[hoCg w`FbN?B// w ww. java 2 s . c om * * <p> * G?[???AG?[????A wG?[?Xg?B G?[?bZ?[WtH?[}bg?A * <code>validation-rules.xml</code>L?q?B<br> * ?AoCg5??A10 <code>true</code> p???B * </p> * <h5>validation.xmlL?q</h5> * <code><pre> * <form name="/sample"> * ?E?E?E * <field property="escape" * depends="byteRange"> * <arg0 key="sample.escape"/> * <var> * <var-name>maxByte</var-name> * <var-value>10</var-value> * </var> * <var> * <var-name>minByte</var-name> * <var-value>5</var-value> * </var> * <var> * <var-name>encoding</var-name> * <var-value>Windows-31J</var-value> * </var> * </field> * ?E?E?E * </form> * </pre></code> * <h5>validation.xml?v<var>vf</h5> * <table border="1"> * <tr> * <td><center><b><code>var-name</code></b></center></td> * <td><center><b><code>var-value</code></b></center></td> * <td><center><b>K?{?</b></center></td> * <td><center><b>Tv</b></center></td> * </tr> * <tr> * <td> maxByte </td> * <td>?oCg?</td> * <td>false</td> * <td>oCg??oCg?B ???int^?l?B</td> * </tr> * <tr> * <td> minByte </td> * <td>?oCg?</td> * <td>false</td> * <td>oCg???oCg?B ???0?B</td> * </tr> * <tr> * <td> encoding </td> * <td>GR?[fBO</td> * <td>false</td> * <td>oCg?gpGR?[fBO?B ???VMftHgGR?[fBOgp?B</td> * </tr> * </table> * * @param bean * ??IuWFNg * @param va * ValidatorpValidatorAction * @param field * tB?[hIuWFNg * @param errors * ANVG?[ * @param validator * ValidatorCX^X * @param request * HTTPNGXg * @return l? <code>true</code> */ public static boolean validateByteRange(Object bean, ValidatorAction va, Field field, ActionMessages errors, Validator validator, HttpServletRequest request) { // beannull?AG?[?O?o?Atruep?B if (bean == null) { log.error("bean is null."); return true; } // l String value = null; if (isString(bean)) { value = (String) bean; } else { value = ValidatorUtils.getValueAsString(bean, field.getProperty()); } // ?lnull?Atruep if (GenericValidator.isBlankOrNull(value)) { return true; } // GR?[fBO String encoding = field.getVarValue("encoding"); // oCg int bytesLength = getByteLength(value, encoding); int min = 0; String minStr = field.getVarValue("minByte"); if (!GenericValidator.isBlankOrNull(minStr)) { try { min = Integer.parseInt(minStr); } catch (NumberFormatException e) { log.error("", e); } } int max = Integer.MAX_VALUE; String maxStr = field.getVarValue("maxByte"); if (!GenericValidator.isBlankOrNull(maxStr)) { try { max = Integer.parseInt(maxStr); } catch (NumberFormatException e) { log.error("", e); } } if (!GenericValidator.isInRange(bytesLength, min, max)) { errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field)); return false; } return true; }
From source file:jp.terasoluna.fw.web.struts.form.FieldChecksEx.java
/** * ?tB?[h`FbN?s?B/*from w w w . j av a2s. c o m*/ * * ??[?s{@link MultiFieldValidator} NX Kv?BNX * <code>validation.xml</code> ??s?B<br> * G?[???AG?[????A wG?[?Xg?B ??[ftHgG?[?bZ?[W?A * ?bZ?[W <code>validation.xml</code> KL?q?B<br> * ANVtH?[valuetB?[hl?Avalue1tB?[hl??A * value2tB?[hl????A?A ??s?B * <h5>{@link MultiFieldValidator} </h5> * <code><pre> * public boolean validate(String value, String[] depends) { * int value0 = Integer.parseInt(value); * int value1 = Integer.parseInt(depends[0]); * int value2 = Integer.parseInt(depends[1]); * return (value1 <= value0 && value2 >= value0); * } * </pre></code> * <h5>validation.xml?</h5> * <code><pre> * <form name="/validateMultiField"> * <field property="value" depends="multiField"> * <msg key="errors.multiField" * name="multiField"/> * <arg key="label.value" position="0" /> * <arg key="label.value1" position="1" /> * <arg key="label.value2" position="2" /> * <var> * <var-name>fields</var-name> * <var-value>value1,value2</var-value> * </var> * <var> * <var-name>multiFieldValidator</var-name> * <var-value>sample.SampleMultiFieldValidator</var-value> * </var> * </field> * </form> * </pre></code> * <h5>?bZ?[W\?[Xt@C?</h5> * <code> * errors.multiField={0}{1}{2}l?B * </code> * * <h5>validation.xml?v<var>vf</h5> * <table border="1"> * <tr> * <td><center><b><code>var-name</code></b></center></td> * <td><center><b><code>var-value</code></b></center></td> * <td><center><b>K?{?</b></center></td> * <td><center><b>Tv</b></center></td> * </tr> * <tr> * <td> fields </td> * <td>?KvtB?[h</td> * <td>false</td> * <td>?tB?[hw??tB?[hJ}? w?B</td> * </tr> * <tr> * <td> multiFieldValidator </td> * <td>{@link MultiFieldValidator} NX</td> * <td>false</td> * <td>?tB?[h`FbN?s {@link MultiFieldValidator} NX?B</td> * </tr> * </table> * * @param bean * ??IuWFNg * @param va * ValidatorpValidatorAction * @param field * tB?[hIuWFNg * @param errors * ANVG?[ * @param validator * ValidatorCX^X * @param request * HTTPNGXg * @return l? <code>true</code> */ public static boolean validateMultiField(Object bean, ValidatorAction va, Field field, ActionMessages errors, Validator validator, HttpServletRequest request) { // beannull?AG?[?O?o?Atruep?B if (bean == null) { log.error("bean is null."); return true; } // ??l String value = null; if (isString(bean)) { value = (String) bean; } else { value = ValidatorUtils.getValueAsString(bean, field.getProperty()); } // tB?[hK?{`FbN?l?A // ?lnull???tB?[h`FbN?s?B // MultiFieldValidatorNX String multiFieldValidatorClass = field.getVarValue("multiFieldValidator"); if (multiFieldValidatorClass == null || "".equals(multiFieldValidatorClass)) { log.error("var value[multiFieldValidator] is required."); throw new IllegalArgumentException("var value[multiFieldValidator] is required."); } MultiFieldValidator mfv = null; try { mfv = (MultiFieldValidator) ClassUtil.create(multiFieldValidatorClass); } catch (ClassLoadException e) { log.error("var value[multiFieldValidator] is invalid.", e); throw new IllegalArgumentException("var value[multiFieldValidator] is invalid.", e); } catch (ClassCastException e) { log.error("var value[multiFieldValidator] is invalid.", e); throw new IllegalArgumentException("var value[multiFieldValidator] is invalid.", e); } // ?tB?[hl String fields = field.getVarValue("fields"); List<String> valueList = new ArrayList<String>(); if (fields != null) { StringTokenizer st = new StringTokenizer(fields, ","); while (st.hasMoreTokens()) { String f = st.nextToken(); f = f.trim(); valueList.add(ValidatorUtils.getValueAsString(bean, f)); } } if (log.isDebugEnabled()) { log.debug("dependent fields:" + valueList); } String[] values = new String[valueList.size()]; valueList.toArray(values); boolean result = mfv.validate(value, values); if (!result) { errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field)); return false; } return true; }
From source file:jp.terasoluna.fw.web.struts.form.FieldChecksEx.java
/** * tw`FbN?B/*from ww w .j ava 2 s. com*/ * * <p> * G?[???AG?[????A wG?[?Xg?B G?[?bZ?[WtH?[}bg?A * <code>validation-rules.xml</code>L?q?B<br> * ?At2000/01/012010/12/31 ???B * </p> * <h5>validation.xmlL?q</h5> * <code><pre> * <form name="/sample"> * ?E?E?E * <field property="date" * depends="dateRange"> * <arg key="label.date" position="0"/> * <var> * <var-name>startDate</var-name> * <var-value>2000/01/01</var-value> * </var> * <var> * <var-name>endDate</var-name> * <var-value>2010/12/31</var-value> * </var> * <var> * <var-name>datePattern</var-name> * <var-value>yyyy/MM/dd</var-value> * </var> * </field> * ?E?E?E * </form> * </pre></code> * <h5>validation.xml?v<var>vf</h5> * <table border="1"> * <tr> * <td><center><b><code>var-name</code></b></center></td> * <td><center><b><code>var-value</code></b></center></td> * <td><center><b>K?{?</b></center></td> * <td><center><b>Tv</b></center></td> * </tr> * <tr> * <td> startDate </td> * <td>Jnt</td> * <td>false</td> * <td>tJnlt?B * datePatterndatePatternStrictwttH?[}bgv?B</td> * </tr> * <tr> * <td> endDate </td> * <td>?It</td> * <td>false</td> * <td>t?Ilt?B * datePatterndatePatternStrictwttH?[}bgv?B</td> * </tr> * <tr> * <td> datePattern </td> * <td>tp^?[</td> * <td>false</td> * <td>tp^?[?BDate^tH?[}bg?[?]?B</td> * </tr> * <tr> * <td> datePatternStrict </td> * <td>tp^?[?BDate^tH?[}bg?[?]?B</td> * <td>false</td> * <td>tp^?[`FbN?s?B tp^?[yyyy/MM/dd???A2001/1/1G?[?B * datePatternw???AdatePatternwtH?[}bg D??B</td> * </tr> * </table> * * @param bean * ??IuWFNg * @param va * ValidatorpValidatorAction * @param field * tB?[hIuWFNg * @param errors * ANVG?[ * @param validator * ValidatorCX^X * @param request * HTTPNGXg * @return l? <code>true</code> */ public static boolean validateDateRange(Object bean, ValidatorAction va, Field field, ActionMessages errors, Validator validator, HttpServletRequest request) { // beannull?AG?[?O?o?Atruep?B if (bean == null) { log.error("bean is null."); return true; } String value = null; if (isString(bean)) { value = (String) bean; } else { value = ValidatorUtils.getValueAsString(bean, field.getProperty()); } // ?lnull?Atruep if (GenericValidator.isBlankOrNull(value)) { return true; } // t?`FbN String datePattern = field.getVarValue("datePattern"); String datePatternStrict = field.getVarValue("datePatternStrict"); Locale locale = RequestUtils.getUserLocale(request, null); Date result = null; try { if (datePattern != null && datePattern.length() > 0) { result = GenericTypeValidator.formatDate(value, datePattern, false); } else if (datePatternStrict != null && datePatternStrict.length() > 0) { result = GenericTypeValidator.formatDate(value, datePatternStrict, true); } else { result = GenericTypeValidator.formatDate(value, locale); } } catch (Exception e) { log.error(e.getMessage(), e); } if (result == null) { errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field)); return false; } // t`FbN // Jn String startDateStr = field.getVarValue("startDate"); // ?I String endDateStr = field.getVarValue("endDate"); if (startDateStr == null && endDateStr == null) { // tw???? return true; } // Jnt?~`FbN if (startDateStr != null && startDateStr.length() > 0) { Date startDate = null; if (datePattern != null && datePattern.length() > 0) { startDate = GenericTypeValidator.formatDate(startDateStr, datePattern, false); } else if (datePatternStrict != null && datePatternStrict.length() > 0) { startDate = GenericTypeValidator.formatDate(startDateStr, datePatternStrict, true); } else { startDate = GenericTypeValidator.formatDate(startDateStr, locale); } if (startDate == null) { errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field)); return false; } if (result.before(startDate)) { errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field)); return false; } } // ?ItO`FbN if (endDateStr != null && endDateStr.length() > 0) { Date endDate = null; if (datePattern != null && datePattern.length() > 0) { endDate = GenericTypeValidator.formatDate(endDateStr, datePattern, false); } else if (datePatternStrict != null && datePatternStrict.length() > 0) { endDate = GenericTypeValidator.formatDate(endDateStr, datePatternStrict, true); } else { endDate = GenericTypeValidator.formatDate(endDateStr, locale); } if (endDate == null) { errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field)); return false; } if (result.after(endDate)) { errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field)); return false; } } return true; }
From source file:jp.terasoluna.fw.web.struts.form.FieldChecksEx.java
/** * wtB?[hv`FbN?B/*from www . j a v a2s. c o m*/ * * <p> * G?[???AG?[????A wG?[?Xg?B G?[?bZ?[WtH?[}bg?A * <code>validation-rules.xml</code>L?q?B<br> * ?A5<code>true</code>p ???B * </p> * <h5>validation.xmlL?q</h5> * <code><pre> * <form name="/sample"> * ?E?E?E * <field property="escape" * depends="stringLength"> * <arg0 key="sample.escape"/> * <var> * <var-name>length</var-name> * <var-value>5</var-value> * </var> * </field> * ?E?E?E * </form> * </pre></code> * <h5>validation.xml?v<var>vf</h5> * <table border="1"> * <tr> * <td><center><b><code>var-name</code></b></center></td> * <td><center><b><code>var-value</code></b></center></td> * <td><center><b>K?{?</b></center></td> * <td><center><b>Tv</b></center></td> * </tr> * <tr> * <td> stringLength </td> * <td>?</td> * <td>false</td> * <td>w? <code>true</code> ?<code>true</code>p?B</td> * </tr> * </table> * * @param bean * ??IuWFNg * @param va * ValidatorpValidatorAction * @param field * tB?[hIuWFNg * @param errors * ANVG?[ * @param validator * ValidatorCX^X * @param request * HTTPNGXg * @return l? <code>true</code> */ public static boolean validateStringLength(Object bean, ValidatorAction va, Field field, ActionMessages errors, Validator validator, HttpServletRequest request) { // beannull?AG?[?O?o?Atruep?B if (bean == null) { log.error("bean is null."); return true; } // String lengthStr = field.getVarValue("stringLength"); // w??A`FbN?s if (lengthStr == null || "".equals(lengthStr)) { return true; } String value = null; if (isString(bean)) { value = (String) bean; } else { value = ValidatorUtils.getValueAsString(bean, field.getProperty()); } // ?lnull?Atruep if (GenericValidator.isBlankOrNull(value)) { return true; } int checkLength = 0; try { checkLength = Integer.valueOf(lengthStr).intValue(); } catch (NumberFormatException e) { // wints\?? log.error("stringLength is not numeric(integer).", e); return true; } // length?Afalsep if (value.length() != checkLength) { errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field)); return false; } return true; }
From source file:jp.terasoluna.fw.web.struts.form.FieldChecksEx.java
/** * wtB?[h~? `FbN?B//from w w w. j av a2 s . c o m * * <p> * G?[???AG?[????A wG?[?Xg?B G?[?bZ?[WtH?[}bg?A * <code>validation-rules.xml</code>L?q?B<br> * ?A~`FbN??B * </p> * <h5>validation.xmlL?q</h5> * <code><pre> * <form name="/sample"> * ?E?E?E * <field property="escape" * depends="prohibited"> * <arg0 key="sample.escape"/> * <var> * <var-name>chars</var-name> * <var-value>!"#$%&'()</var-value> * </var> * </field> * ?E?E?E * </form> * </pre></code> * <h5>validation.xml?v<var>vf</h5> * <table border="1"> * <tr> * <td><center><b><code>var-name</code></b></center></td> * <td><center><b><code>var-value</code></b></center></td> * <td><center><b>K?{?</b></center></td> * <td><center><b>Tv</b></center></td> * </tr> * <tr> * <td> chars </td> * <td>~LN^</td> * <td>false</td> * <td>?A~LN^?A <code>false</code>p?B?<code>true</code></td> * </tr> * </table> * * @param bean * ??IuWFNg * @param va * <code>Validator</code>p <code>ValidatorAction</code> * @param field * tB?[hIuWFNg * @param errors * ANVG?[ * @param validator * ValidatorCX^X * @param request * HTTPNGXg * @return l? <code>true</code> */ public static boolean validateProhibited(Object bean, ValidatorAction va, Field field, ActionMessages errors, Validator validator, HttpServletRequest request) { // beannull?AG?[?O?o?Atruep?B if (bean == null) { log.error("bean is null."); return true; } // ~ String prohibitedStr = field.getVarValue("chars"); if (prohibitedStr == null || "".equals(prohibitedStr)) { // ~null?Atruep return true; } String value = null; if (isString(bean)) { value = (String) bean; } else { value = ValidatorUtils.getValueAsString(bean, field.getProperty()); } // ?lnull?Atruep if (StringUtils.isEmpty(value)) { return true; } char[] chars = value.toCharArray(); // ~????A`FbN?s for (int i = 0; i < chars.length; i++) { if (prohibitedStr.indexOf(chars[i]) >= 0) { errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field)); return false; } } return true; }
From source file:jp.terasoluna.fw.web.struts.form.FieldChecksEx.java
/** * wtB?[h?l`FbN?B//from ww w . j a va 2s.c o m * * ?Ap?A<code>BigDecimal</code> ^?? * ??s\G?[pActionMessage???A<code>false</code> p?B * * ???w???A?mF?s?B <code>validation.xml</code> * <code>isAccordedInteger()</code> <code>"true"</code> w?? * ???`FbN?s?B `FbN???AG?[pActionMessage???Afalsep?B * * ????w???A?mF?s?B * validation.xmlisAccordedScale"true"?? ???`FbN?s?B * * <p> * G?[???AG?[????A wG?[?Xg?B G?[?bZ?[WtH?[}bg?A<code>validation-rules.xml</code> * L?q?B<br> * L?A??3?A??2?l??B * </p> * * <h5>validation.xmlL?q</h5> * <code><pre> * <form name="/sample"> * ?E?E?E * <field property="escape" * depends="number"> * <arg0 key="sample.escape"/> * <var> * <var-name>integerLength</var-name> * <var-value>3</var-value> * </var> * <var> * <var-name>scale</var-name> * <var-value>2</var-value> * </var> * <var> * <var-name>isAccordedInteger</var-name> * <var-value>true</var-value> * </var> * <var> * <var-name>isAccordedScale</var-name> * <var-value>true</var-value> * </var> * </field> * ?E?E?E * </form> * </pre></code> * <h5>validation.xml?v<var>vf</h5> * <table border="1"> * <tr> * <td><center><b><code>var-name</code></b></center></td> * <td><center><b><code>var-value</code></b></center></td> * <td><center><b>K?{?</b></center></td> * <td><center><b>Tv</b></center></td> * </tr> * <tr> * <td> <code>integerLength</code> </td> * <td> ??? </td> * <td> <code>false</code> </td> * <td>?????A<code>isAccordedInteger</code>w * ?Aw???s?B??A?l ??A??s?B</td> * </tr> * <tr> * <td> <code>scale</code> </td> * <td> ??? </td> * <td> <code>false</code> </td> * <td>??l???A<code>isAccordedScale</code>w * ?Aw???s?B??A?l ??A??s?B</td> * </tr> * <tr> * <td> <code>isAccordedInteger</code> </td> * <td> ???v`FbN </td> * <td> <code>false</code> </td> * <td> <code>true</code>w?A???v`FbN ?s?B??A<code>true</code>O? * ?`FbN?B</td> * </tr> * <tr> * <td> <code>isAccordedScale</code> </td> * <td> ???v`FbN </td> * <td> <code>false</code> </td> * <td> <code>true</code>w?A???v`FbN ?s?B??A<code>true</code>O? * ?`FbN?B</td> * </tr> * </table> * * @param bean * ??IuWFNg * @param va * StrutspValidatorAction * @param field * tB?[hIuWFNg * @param errors * ActionMessages ANVG?[ * @param validator * ValidatorCX^X * @param request * HTTPNGXg * @return l? <code>true</code> */ public static boolean validateNumber(Object bean, ValidatorAction va, Field field, ActionMessages errors, Validator validator, HttpServletRequest request) { // beannull?AG?[?O?o?Atruep?B if (bean == null) { log.error("bean is null."); return true; } // ??? String integerLength = field.getVarValue("integerLength"); // ??? String scaleStr = field.getVarValue("scale"); // ???v`FbN String isAccordedInteger = field.getVarValue("isAccordedInteger"); // ???v`FbN String isAccordedScale = field.getVarValue("isAccordedScale"); String value = null; if (isString(bean)) { value = (String) bean; } else { value = ValidatorUtils.getValueAsString(bean, field.getProperty()); } // ?lnull?Atruep if (GenericValidator.isBlankOrNull(value)) { return true; } char[] chars = value.toCharArray(); for (int i = 0; i < chars.length; i++) { if (!isHankaku(chars[i])) { errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field)); return false; } } // ???w???A??`FbN?s if (GenericValidator.isInt(integerLength)) { try { BigDecimal bd = new BigDecimal(value); // ???l?o BigInteger bi = bd.toBigInteger().abs(); // ??? int length = bi.toString().length(); // validation.xmlw? int checkLength = Integer.valueOf(integerLength).intValue(); // ?I?[o?Afalsep if (length > checkLength) { errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field)); return false; } // vw if (isAccordedInteger != null && "true".equals(isAccordedInteger)) { // ?sv?Afalsep if (length != checkLength) { errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field)); return false; } } } catch (NumberFormatException nfe) { // ?l^?Afalsep errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field)); return false; } } // ???w???A??`FbN?s if (GenericValidator.isInt(scaleStr)) { int scale = 0; int checkScale = 0; try { BigDecimal bd = new BigDecimal(value); scale = bd.scale(); // validation.xmlw? checkScale = Integer.valueOf(scaleStr).intValue(); } catch (NumberFormatException e) { // ?l^?Afalsep errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field)); return false; } // ?I?[o?Afalsep if (scale > checkScale) { errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field)); return false; } // vw if (isAccordedScale != null && "true".equals(isAccordedScale)) { // ?sv?Afalsep if (scale != checkScale) { errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field)); return false; } } } return true; }
From source file:jp.terasoluna.fw.validation.FieldChecks.java
/** * ???bean?Null???Null?//from w ww . j a va 2 s. c om * bean?String???bean? * bean?Number?Boolean?Character???bean.toString()? * ?????bean?<code>Field</code>??? * <code>ValidatorUtils</code>????? * * @param bean ? * @param field <code>Field</code> * @return * @see ValidatorUtils#getValueAsString(Object, String) */ protected String extractValue(Object bean, Field field) { String value = null; if (bean == null) { return null; } else if (bean instanceof String) { value = (String) bean; } else if (bean instanceof Number || bean instanceof Boolean || bean instanceof Character) { value = bean.toString(); } else { value = ValidatorUtils.getValueAsString(bean, field.getProperty()); } return value; }
From source file:jp.terasoluna.fw.validation.FieldChecks.java
/** * ????????//from www .j a v a 2 s. c o m * ??????? * ??????????errors??? * false?? * * <p>?????????????true?? * ??? * * <h5>validation.xml?</h5> * <code><pre> * <form name="sample"> * * <field property="arrayField" * depends="arrayRange"> * <arg key="sample.arrayField" position="0"/> * <var> * <var-name>minArrayLength</var-name> * <var-value>4</var-value> * </var> * <var> * <var-name>maxArrayLength</var-name> * <var-value>7</var-value> * </var> * </field> * * </form> * </pre></code> * <h5>validation.xml???<var>?</h5> * <table border="1"> * <tr> * <td><center><b><code>var-name</code></b></center></td> * <td><center><b><code>var-value</code></b></center></td> * <td><center><b></b></center></td> * <td><center><b>?</b></center></td> * </tr> * <tr> * <td> minArrayLength </td> * <td>??</td> * <td>false</td> * <td>????? * ???????????</td> * </tr> * <tr> * <td> maxArrayLength </td> * <td>?</td> * <td>false</td> * <td>???? * ??????? * <code>int</code>???</td> * </tr> * </table> * * @param bean ?JavaBean * @param va Validator????ValidatorAction * @param field * @param errors * @return ???? true * @throws ValidatorException validation?????? * ? */ public boolean validateArrayRange(Object bean, ValidatorAction va, Field field, ValidationErrors errors) throws ValidatorException { // ??bean?null???ValidatorException if (bean == null) { String message = "target of validateArrayRange must be not null."; log.error(message); throw new ValidatorException(message); } try { Class<?> type = BeanUtil.getBeanPropertyType(bean, field.getProperty()); if (type == null) { String message = "Cannot get property type[" + bean.getClass().getName() + "." + field.getProperty() + "]"; log.error(message); throw new ValidatorException(message); } else if (!type.isArray() && !Collection.class.isAssignableFrom(type)) { String message = "property [" + bean.getClass().getName() + "." + field.getProperty() + "] must be instance of Array or Collection."; log.error(message); throw new ValidatorException(message); } } catch (PropertyAccessException e) { String message = "Cannot get property type[" + bean.getClass().getName() + "." + field.getProperty() + "]"; log.error(message, e); throw new ValidatorException(message); } // Object obj = null; try { obj = BeanUtil.getBeanProperty(bean, field.getProperty()); } catch (PropertyAccessException e) { String message = "Cannot get property [" + bean.getClass().getName() + "." + field.getProperty() + "]"; log.error(message, e); throw new ValidatorException(message); } // ???? int min = 0; String minStr = field.getVarValue("minArrayLength"); if (!GenericValidator.isBlankOrNull(minStr)) { try { min = Integer.parseInt(minStr); } catch (NumberFormatException e) { String message = "Mistake on validation definition file. " + "- minArrayLength is not number. " + "You'll have to check it over. "; log.error(message, e); throw new ValidatorException(message); } } // ??? int max = Integer.MAX_VALUE; String maxStr = field.getVarValue("maxArrayLength"); if (!GenericValidator.isBlankOrNull(maxStr)) { try { max = Integer.parseInt(maxStr); } catch (NumberFormatException e) { String message = "Mistake on validation definition file. " + "- maxArrayLength is not number. " + "You'll have to check it over. "; log.error(message, e); throw new ValidatorException(message); } } // try { if (!ValidationUtil.isArrayInRange(obj, min, max)) { rejectValue(errors, field, va, bean); return false; } } catch (IllegalArgumentException e) { log.error(e.getMessage()); throw new ValidatorException(e.getMessage()); } return true; }
From source file:jp.terasoluna.fw.validation.FieldChecks.java
/** * ???/*from w ww. j av a2s.c o m*/ * * ?????{@link MultiFieldValidator} ???<br> * ??? <code>validation.xml</code> ??<br> * ??????????? * ???? * ??????????? * ? <code>validation.xml</code> ?????<br> * value???value1?? * value2???????????? * ? * <h5>{@link MultiFieldValidator} ?</h5> * <code><pre> * public boolean validate(Object value, Object[] depends) { * int value0 = Integer.parseInt(value); * int value1 = Integer.parseInt(depends[0]); * int value2 = Integer.parseInt(depends[1]); * return (value1 <= value0 && value2 >= value0); * } * </pre></code> * <h5>validation.xml?</h5> * <code><pre> * <form name="/validateMultiField"> * <field property="value" depends="multiField"> * <msg key="errors.multiField" * name="multiField"/> * <arg key="label.value" position="0" /> * <arg key="label.value1" position="1" /> * <arg key="label.value2" position="2" /> * <var> * <var-name>fields</var-name> * <var-value>value1,value2</var-value> * </var> * <var> * <var-name>multiFieldValidator</var-name> * <var-value>sample.SampleMultiFieldValidator</var-value> * </var> * </field> * </form> * </pre></code> * <h5>?</h5> * <code> * errors.multiField={0}?{1}?{2}????????? * </code> * * <h5>validation.xml???<var>?</h5> * <table border="1"> * <tr> * <td><center><b><code>var-name</code></b></center></td> * <td><center><b><code>var-value</code></b></center></td> * <td><center><b></b></center></td> * <td><center><b>?</b></center></td> * </tr> * <tr> * <td> fields </td> * <td>??????</td> * <td>false</td> * <td>??????? * ?</td> * </tr> * <tr> * <td> multiFieldValidator </td> * <td>{@link MultiFieldValidator} ??</td> * <td>true</td> * <td>??? {@link MultiFieldValidator} * ??</td> * </tr> * </table> * * @param bean ? * @param va Validator????ValidatorAction * @param field * @param errors * @return ???? <code>true</code> */ public boolean validateMultiField(Object bean, ValidatorAction va, Field field, ValidationErrors errors) { // bean?null????true?? if (bean == null) { log.error("bean is null."); return true; } // ?? Object value = null; if (bean instanceof String) { value = bean; } else { try { value = PropertyUtils.getProperty(bean, field.getProperty()); } catch (IllegalAccessException e) { log.error(e.getMessage(), e); } catch (InvocationTargetException e) { log.error(e.getMessage(), e); } catch (NoSuchMethodException e) { log.error(e.getMessage(), e); } } // ???????? // ?null????????? // MultiFieldValidator??? String multiFieldValidatorClass = field.getVarValue("multiFieldValidator"); if (multiFieldValidatorClass == null || "".equals(multiFieldValidatorClass)) { log.error("var value[multiFieldValidator] is required."); throw new IllegalArgumentException("var value[multiFieldValidator] is required."); } MultiFieldValidator mfv = null; try { mfv = (MultiFieldValidator) ClassUtil.create(multiFieldValidatorClass); } catch (ClassLoadException e) { log.error("var value[multiFieldValidator] is invalid.", e); throw new IllegalArgumentException("var value[multiFieldValidator] is invalid.", e); } catch (ClassCastException e) { log.error("var value[multiFieldValidator] is invalid.", e); throw new IllegalArgumentException("var value[multiFieldValidator] is invalid.", e); } // ???? String fields = field.getVarValue("fields"); List<Object> valueList = new ArrayList<Object>(); if (fields != null) { StringTokenizer st = new StringTokenizer(fields, ","); while (st.hasMoreTokens()) { String f = st.nextToken(); f = f.trim(); try { valueList.add(PropertyUtils.getProperty(bean, f)); } catch (IllegalAccessException e) { log.error(e.getMessage(), e); } catch (InvocationTargetException e) { log.error(e.getMessage(), e); } catch (NoSuchMethodException e) { log.error(e.getMessage(), e); } } } if (log.isDebugEnabled()) { log.debug("dependent fields:" + valueList); } Object[] values = new Object[valueList.size()]; valueList.toArray(values); boolean result = mfv.validate(value, values); if (!result) { rejectValue(errors, field, va, bean); return false; } return true; }
From source file:org.agnitas.service.csv.validator.FieldsValidator.java
private static String getValueAsString(Object bean, Field field) { String value = null;/* w w w .j av a 2 s . c o m*/ final String varValue = field.getVarValue("customField"); if (Boolean.valueOf(varValue)) { try { Object property = PropertyUtils.getProperty(bean, "customFields"); if (property instanceof Map) { value = ((Map<String, String>) property).get(field.getProperty()); } } catch (Exception e) { AgnUtils.logger().warn( MessageFormat.format("Failed to get bean ({0}) property ({1})as string", bean, varValue), e); } } else { value = ValidatorUtils.getValueAsString(bean, field.getProperty()); } return value; }