您的位置:程序门 -> java -> eclipse



关于使用struts验证客户端的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


关于使用struts验证客户端的问题[已结贴,结贴人:gzcjun]
发表于:2007-01-18 10:26:19 楼主
各位高手:
      我想请教一个问题,使用struts能否实现这样的场景:一个form里包含一个username的文本框,当我把焦点从空的文本框移走时,struts自动验证,发现为空时显示红色的字体:该项不能为空,而不是按submit按钮后才验证,请问这一点如何实现,我搞了两天还不行。下面是我的代码:
*******************************
1、web.xml
...
        <init-param>
            <param-name> application </param-name>
            <param-value> csnbudget </param-value>
        </init-param>
        <init-param>
            <param-name> validate </param-name>
            <param-value> true </param-value>
        </init-param>
...
********************************
2、struts-config.xml
...
    <action-mappings   >
        <action
            attribute= "addbudgetform "
            input= "/form/addbudget.jsp "
            name= "addbudgetform "
            path= "/addbudget "
            scope= "request "
            type= "com.budget.struts.action.addbudgetaction "
            validate= "true ">
            <forward   name= "success_addbudget "   path= "/form/success.jsp "   />
        </action>
    </action-mappings>
    <message-resources   parameter= "com.budget.struts.csnbudget "   />
    <plug-in   classname= "org.apache.struts.validator.validatorplugin ">
        <set-property   property= "pathnames "   value= "/web-inf/validator-rules.xml,
                                                                                            /web-inf/validation.xml "/>
    </plug-in>
...
********************************
3、validation.xml
<?xml   version= "1.0 "   encoding= "utf-8 "?>
<!doctype   form-validation   public   "-//apache   software   foundation//dtd   commons   validator   rules   configuration   1.0//en "   "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd ">
<form-validation>
    <global>
        <constant>
            <constant-name> name </constant-name>
            <constant-value> ^\d{8}\d*$ </constant-value>
        </constant>
    </global>
    <formset>
        <form   name= "addbudgetform ">
            <field   property= "username "   depends= "required ">
            </field>
            <field   property= "type "   depends= "required "> </field>
           
        </form>
    </formset>
</form-validation>
********************************
4、validator-rules.xml
内容不变。
********************************
5、addbudgetform.java
...
public   actionerrors   validate(
actionmapping   mapping,
httpservletrequest   request)   {

//   todo   auto-generated   method   stub
return   null;
}
...
********************************
6、addbudget.jsp
...
<html:errors/>
      <html:form   action= "/addbudget ">
            用户名:
            <html:text   property= "username "/>
            <html:errors   property= "username "/>
            <html:submit   value= "确   认 "/>
            <html:cancel   value= "取   消 "/>
      </html:form>
      <html:javascript   dynamicjavascript= "true "  
        staticjavascript= "true "   formname= "addbudgetform "/>

...

      我试了很多此,但按tab键跳离文本框时出错信息并不显示,请大家指点一下。
发表于:2007-01-18 10:35:151楼 得分:0
补充一点,我查看了实际生成的网页,看到代码如下: <input   type= "text "   name= "username "   value= " ">   ,对应 <html:errors> 的代码根本没有,这是为什么呢。
发表于:2007-01-18 16:35:592楼 得分:20
这种东西用javascript做就好了   不用搞那么复杂.当失去焦点调用一个验证函数就行了
发表于:2007-01-19 11:56:163楼 得分:10
没有对应的代码是可以运行的,但是就是不全面罢了
发表于:2007-01-19 15:46:144楼 得分:70
java的标签库只是用jsp的方法重写了这段代码,这段代码会通过java服务器根据情况进行重新解释成为html,毕竟通常的ie只知道html语言,对于asp,jsp它是不关心的。
搂住的想法是不错的,struts本身不提供这种途径,毕竟对于mvc来说这不是正途,楼主现在用的javascript是validator包里面的默认设置,需要这么做的话就要对validation.xml进行重新构造,这这里面写上你自己的对username进行验证的javascript
发表于:2007-01-21 20:05:085楼 得分:0
see


快速检索

最新资讯
热门点击