论坛首页 Java版 Webwork

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

浏览 3002 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2005-03-05
我的classes下有validations.xml,而且在LogonAction.class的包中有LogonAction-validation.xml. 在jsp文件中,我也加上了 validate="true"
[code:1]
<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>
[/code:1]

我得xwork.xml很简单:
[code:1]
<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>
[/code:1]

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

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

image:
  • 3b3537d9-42ec-431c-af49-fd7a01433cfb-thumb
  • 描述: js error
  • 大小: 21.4 KB
   
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:
[code:1]
<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>
[/code:1]
我只在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版 Webwork

跳转论坛: