How To Add a TwoFields Validator
来源:互联网 发布:花钱提问的软件 编辑:程序博客网 时间:2024/05/16 16:16
validator-rules.xml
). So yesterday, I did some tinkering and figured out how to add the JavaScript method to validator-rules.xml
. So here's how to configure the whole thing (most of this is contained in the Validator Guide, save the JavaScript). How To Add a TwoFields Validator
Step 1: Create a class with a
validateTwoFields
method. In my code, my class is ValidationUtil
and has the following method: public static boolean validateTwoFields(Object bean, ValidatorAction va, Field field, ActionErrors errors, HttpServletRequest request) { String value = ValidatorUtil.getValueAsString(bean, field.getProperty()); String sProperty2 = field.getVarValue("secondProperty"); String value2 = ValidatorUtil.getValueAsString(bean, sProperty2); if (!GenericValidator.isBlankOrNull(value)) { try { if (!value.equals(value2)) { errors.add(field.getKey(), Resources.getActionError(request, va, field)); return false; } } catch (Exception e) { errors.add(field.getKey(), Resources.getActionError(request, va, field)); return false; } } return true;}
Step 2: Edit validator-rules.xml
to contain the "twofields" rule.
<validator name="twofields" classname="org.appfuse.webapp.util.ValidationUtil" method="validateTwoFields" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest" depends="required" msg="errors.twofields"> <javascript><![CDATA[ function validateTwoFields(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oTwoFields = new twofields(); for (x in oTwoFields) { var field = form[oTwoFields[x][0]]; var secondField = form[oTwoFields[x][2]("secondProperty")]; if (field.type == 'text' || field.type == 'textarea' || field.type == 'select-one' || field.type == 'radio' || field.type == 'password') { var value; var secondValue; // get field's value if (field.type == "select-one") { var si = field.selectedIndex; value = field.options[si].value; secondValue = secondField.options[si].value; } else { value = field.value; secondValue = secondField.value; } if (value != secondValue) { if (i == 0) { focusField = field; } fields[i++] = oTwoFields[x][1]; bValid = false; } } } if (fields.length > 0) { focusField.focus(); alert(fields.join('/n')); } return bValid; }]]></javascript></validator>
Step 3: Configure validation for your form in validation.xml
:
<field property="password" depends="required,twofields"> <msg name="required" key="errors.required"/> <msg name="twofields" key="errors.twofields"/> <arg0 key="userForm.password"/> <arg1 key="userForm.confirmPassword" /> <var> <var-name>secondProperty</var-name> <var-value>confirmPassword</var-value> </var></field>
Where errors.twofields=The '{0}' field has to have the same value as the '{1}' field. An alternative to Step 3 is to use XDoclet to generate your validation.xml
. This requires (1) configuring XDoclet (of course) and (2) adding some @struts
tags to your form on the setPassword
method.
/** * Returns the password. * @return String * * @struts.validator type="required" msgkey="errors.required" * @struts.validator type="twofields" msgkey="errors.twofields" * @struts.validator-args arg1resource="userForm.password" * @struts.validator-args arg1resource="userForm.confirmPassword" * @struts.validator-var name="secondProperty" value="confirmPassword" */public String setPassword() {return password;}
I've sent this as a proposal to the struts-dev mailing list yesterday, but haven't heard anything yet. Enjoy!
Update: You'll need to update ValidationUtil.java and validator-rules-custom.xml for Struts 1.2. Full files: ValidationUtil.java and validation-rules-custom.xml. February 26, 2003 12:29 PM MST Permalink
Moblogger works with Roller! Category: Roller
I did some testing with Russ's Moblogger this morning and it works great with Roller! I haven't tested attaching images, but sending a plain text message worked like a charm. The hardest part was setting up the e-mail address. I'll try to document my setup procedures tonight for other Roller users.
Hopefully, I'll be setting this up on this site so I can post with my T68i. What does that give me? Nothing, absolutely nothing - simply the ability to post 1 liners or something like that. Of course, I could also be motivated to get the phone's camera - that might make it a little more worthwhile. Good excuse for new gadget. I dig the software/idea - thanks Russ!
转载自Raible Designs
- How To Add a TwoFields Validator
- How to add custom validator to paper-input?
- How to add a button to PreferenceScreen
- How to add a .dll file ?
- How to add a Linux service
- How to add a user to a group
- How to add a new module to Android_from myself
- How to add a user to the sudoers list
- How to add a test plan, package to Android CTS?
- How to add a node to an mnesia cluster?
- How to add a test plan, package to Android CTS?
- RadTreeView:How to add controls to a node
- How to add RD license servers to a win8 host
- How to add a test plan, package to Android CTS?
- How to add a new record to an IQueryable variable?
- How to add a custom build step to MSBuild Projects
- How to add a path to matlab search path permanently
- How To Add a License Key To Your Vuforia App
- 我的BLOG开张了!!! :-D
- 我的祝福!
- JDO对开发的帮助有哪些 - 实例解析
- HDMI回顾
- jbpm中Decision的使用
- How To Add a TwoFields Validator
- 以小博大 Java性能优化技巧集锦
- Hibernate实现无限子结点的树形目录
- Spring + Hibernate
- 实例讲解:Java中的SOAP技术
- 整合struts和hibernate开发向导
- 水晶报表4.6的使用示例
- why not better than her for English?
- 2005.01.13 工作感受