论坛首页 Java企业应用论坛

webwork的客户端验证不起作用?

浏览 6331 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-03-05  
我的classes下有validations.xml,而且在LogonAction.class的包中有LogonAction-validation.xml. 在jsp文件中,我也加上了 validate="true"
<ww:form name="'loginform'" action="'login.action'" method="'POST'"  validate="true">
<TABLE align="center" style="border:solid #669999 2px">
<tr bgcolor="#99CC99"><td align="center" colspan="2">Logon first:</td></tr>
<TR>
	<TD><ww:textfield label="'name'" name="'model.username'" value="lyoform.username"/>
</TD>
</TR>
<TR>
	<TD><ww:textfield label="'password'" name="'form.userpassword'" value="lyoform.userpassword"/>
</TD>
</TR>
<tr align="center"><td colspan="2"><input type="submit"/></td></tr>
</TABLE>

</ww:form>
</body>


我得xwork.xml很简单:
<xwork>
    <include file="webwork-default.xml"/>
    <package name="default" extends="webwork-default">
       


<interceptors>	
<interceptor-stack name="validationWorkflowStack">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="validation"/>
<interceptor-ref name="workflow"/>
</interceptor-stack>

<interceptor-stack name="modelParamsStack">
<interceptor-ref name="params" />
<interceptor-ref name="model-driven" />
<interceptor-ref name="validationWorkflowStack" />
</interceptor-stack>
</interceptors>
       
       
        <action name="login" class="lyo.test.LogonAction">
            <result name="success" type="dispatcher">
                <param name="location">/main.jsp</param>
            </result>
			<result name="error" type="dispatcher">
                <param name="location">/error.jsp</param>
				 <param name="input">/login.jsp</param>
            </result>
			<interceptor-ref name="modelParamsStack" />
			<interceptor-ref name="validationWorkflowStack" />
			
        </action>

       

    </package>


但是点击提交的时候,浏览器跳转到空白页面,后台提示:
2005-3-5 19:01:35 com.opensymphony.xwork.DefaultActionInvocation executeResult
警告: No result defined for action lyo.test.LogonAction and result input


但是在xwork.xml中明明有result的定义! 好像这种struts,webwork框架的客户端验证都是这样,按照正确配置都莫名其妙的不起作用,webwork自带的验证例子连运行都运行不了!他的例子一点击提交,就报js错误,form.0 不是对象!有验证起作用的么?
   发表时间:2005-03-05  
加上code]&lt;result name="input" type="dispatcher"&gt;login.jsp&lt;/result&gt;  后,可以验证了,但是报 js错误!

image:
0 请登录后投票
   发表时间:2005-03-06  
这是不是webwork的bug? 我在jsr上也看到这个问题,是2.1.6,我用的是 2.1.7. 还有就是:
1.必须为每个Action都写自己的 ActionClass-validation.xml么?不能像struts那样几个form公用一个定制的validation么?
2.webwork页面上命名规则都是单引号的形式,能不能改称通常习惯的不加单引号的方式?
0 请登录后投票
   发表时间:2005-03-07  
2.1.7开始用的是XmlHttpRequest,但是还不成熟,在firefox下面可以用, 在IE下面不行.

你要么换2.1.6,要么从jira上找一下, 偶记得有一个相关的patch的.
0 请登录后投票
   发表时间:2005-03-07  
lyo 写道

1.必须为每个Action都写自己的 ActionClass-validation.xml么?不能像struts那样几个form公用一个定制的validation么?

可以利用继承关系, 比如BarAction-validation.xml , 能够被BarAction和FooAction extends BarAction重用.

lyo 写道

2.webwork页面上命名规则都是单引号的形式,能不能改称通常习惯的不加单引号的方式?

这个是万恶的jsp tag照成的了, 如果你用的不是jsp, 比如velocity/freemarker之类的, 那么写一些macro, 就可以避免单引号,双引号这些混淆了.
0 请登录后投票
   发表时间:2005-03-07  
Readonly 写道
lyo 写道

1.必须为每个Action都写自己的 ActionClass-validation.xml么?不能像struts那样几个form公用一个定制的validation么?

可以利用继承关系, 比如BarAction-validation.xml , 能够被BarAction和FooAction extends BarAction重用.

lyo 写道

2.webwork页面上命名规则都是单引号的形式,能不能改称通常习惯的不加单引号的方式?

这个是万恶的jsp tag照成的了, 如果你用的不是jsp, 比如velocity/freemarker之类的, 那么写一些macro, 就可以避免单引号,双引号这些混淆了.


多谢,我下载了 webwork2.1 final,但是仍然有bug,点击按钮后,js错误:
"$parameters 未定义"!!!
我看了页面的js代码,确实没有翻译这个parameters:
<form
              name="test"               action="/lyowebwork/login.action"           method="POST"             onsubmit="return(test_validate(););"    >

<TABLE align="center" style="border:solid #669999 2px">
<tr bgcolor="#99CC99"><td align="center" colspan="2">Logon first:</td></tr>
<TR>
	<TD>


<tr>
            <td align="right" valign="top">
    
                    <span class="label">
        
                     name:
                    </span>
        </td>

    <td>

<input type="text"
                                   name="model.username"
/>
  </td>
</tr>

</TD>
</TR>
<TR>
	<TD>


<tr>
            <td align="right" valign="top">
    
                    <span class="label">
        
                     password:
                    </span>
        </td>

    <td>

<input type="text"
                                   name="model.userpassword"
/>
  </td>
</tr>

</TD>
</TR>
<tr align="center"><td colspan="2"><tr>
    <td colspan="2">
<div
              align="center"             ><input
            type="submit"
                          value="sub"                                     /></div>
  </td>
</tr>
</td></tr>
</TABLE>

    <script>
    function test_validate(); {
        var form = document.forms['test'];
        var focus = test_validate_actual();;
        if (focus != null); {
            form.elements[focus].focus();;
            if (form.elements[focus].type == 'text' || form.elements[focus].type == 'textarea'); {
                form.elements[focus].select();;            
            }
            return false;
        } else {
            return true;
        }
    }

    function test_validate_actual(); {
        var form = document.forms['test'];
        $parameters.javascriptValidation
        return null;
    }
    </script>
</form>

我只在java.net上找到2.1final.但是
webwork2.1.6我还没有找到哪里下载,你能给个连接吗?
0 请登录后投票
   发表时间:2005-03-07  
Readonly 写道
2.1.7开始用的是XmlHttpRequest,但是还不成熟,在firefox下面可以用, 在IE下面不行.

你要么换2.1.6,要么从jira上找一下, 偶记得有一个相关的patch的.



我找到2.1.6了,再试试js验证功能!

不过你回答的第二个问题还不是很明白,就是说我必须用单引号,不能在哪个地方设置一下么
0 请登录后投票
   发表时间:2005-03-07  
果然是版本问题,我现在用了2.1.6,可以了! 但是不知道2.1.6会不会比2.1.7少一些重要功能
0 请登录后投票
   发表时间:2005-03-08  
lyo 写道
果然是版本问题,我现在用了2.1.6,可以了! 但是不知道2.1.6会不会比2.1.7少一些重要功能

不会查change log么?
0 请登录后投票
   发表时间:2005-03-18  
我也曾经遇到过2.1.7的客户端校验错误的问题。
后来发现,其实是2.1.7自带的template有问题。
只需要在你的web目录下面建立template目录。
把2.1.6的jar包中的simple,vxhtml,xhtml拷贝进去就可以了。
实际上就是换一下标签的模板。
不知道能不能解决你的问题。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics