一个奇怪的Struts表单(密码)验证问题

javaren555 2004-10-01 11:46:08
我的表单里面的密码类型进行了required,minlength,maxlength三个属性的验证,却只有required能够验证出来外另外两个不能验证.但是我如果把密码类型改为text后就可以了,真的是搞不懂啊,希望大家指教,谢谢!
...全文
160 5 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
temony 2005-01-05
  • 打赏
  • 举报
回复
Struts好象不提供对PASSWORD的长度验证,只有自己在ACTIONFORM写validate()来验证了
javaren555 2004-10-02
  • 打赏
  • 举报
回复
但是我还是不明白,在form表单中的password和text提交到后台的不都是String吗?
kui 2004-10-02
  • 打赏
  • 举报
回复
text类型?你是指数据库中的类型吧?是字符串型应该就可以吧?

这主要是与validateMaxLength函数有关,当然,其它类型的数据也可以用,只是处理方法有些不同,其它类型是通过value = ValidatorUtil.getValueAsString(bean, field.getProperty());转换成字符串型。

例如下面是Struts的org.apache.struts.validator.FieldChecks中validateMaxLength()函数源程序,如果是用了其它的验证方法,与这里可能会有些不同:
public static boolean validateMaxLength(Object bean,
ValidatorAction va, Field field,
ActionErrors errors,
HttpServletRequest request) {

String value = null;
if (isString(bean)) {
value = (String) bean;
} else {
value = ValidatorUtil.getValueAsString(bean, field.getProperty());
}

if (!GenericValidator.isBlankOrNull(value)) {
try {
int max = Integer.parseInt(field.getVarValue("maxlength"));

if (!GenericValidator.maxLength(value, max)) {
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;
}
kui 2004-10-01
  • 打赏
  • 举报
回复
主要看你用的是什么验证函数(method属性指定)。我想你一定是用Struts自带的验证函数validateMaxLength,这些函数一般都要求是字符串输入。想知道原因可看一下这些函数的源程序。

<validator name="maxlength"
classname="org.apache.struts.validator.FieldChecks"
method="validateMaxLength"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionErrors,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.maxlength">
javaren555 2004-10-01
  • 打赏
  • 举报
回复
看的还是不是很明白,能再解释的清楚一下吗。比如为什么把password类型改为text类型就可以?
相关推荐
发帖
Java

4.9w+

社区成员

Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
帖子事件
创建了帖子
2004-10-01 11:46
社区公告
暂无公告