论坛首页 Java企业应用论坛

WW 2.2的form tag里的onsubmit不工作?

浏览 5497 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-01-19  
起因是使用Michael Chen的JSValidation,需要手动写onsubmit,结果居然发现webwork 2.2的正式版本里面的form tag里面的onsubmit在使用jsp view的时候没法输出,苦恼于此。暂时通过修改模板修改了一下,但是如此很不爽。所以就想测试一下到底是不是我们项目的问题还是ww 2.2的问题。但一直太忙,今天才抽出功夫测。以下是测试纪录,希望知道缘由的朋友帮我指点一下。

测试使用Webwork发行包中演示的starter项目,其中使用了ftl模板作为表现层,我按它的方式制造了newPerson.jsp。
下面是两个页面的源文件:
newPerson.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<%@ taglib uri="webwork" prefix="ww"%>
<html>
<head>
    <title>New Person</title>
    <link href="<ww:url value="/webwork/jscalendar/calendar-blue.css" />" rel="stylesheet" type="text/css" media="all"/>
</head>

<body>
<ww:form action="newPerson" onsubmit="dosomething" validate="false">
    <ww:textfield label="Name" name="person.name"/>
    <ww:datepicker  name="date" id="ecoInf.turninDate" template="datepicker.ftl" language="en" format="%Y-%m-%d" label="Time"/>
    <ww:submit value="Create person"/>
</ww:form>
</body>
</html>
newPerson.ftl
<html>
<head>
    <title>New Person</title>
    <link href="<@ww.url value="/webwork/jscalendar/calendar-blue.css" />" rel="stylesheet" type="text/css" media="all"/>
</head>

<body>
<@ww.form action="newPerson" onsubmit="dosomething">
    <@ww.textfield label="Name" name="person.name"/>
    <@ww.datepicker  name="date" id="ecoInf.turninDate" template="datepicker.ftl" language="en" format="%Y-%m-%d" label="Time"/>
    <@ww.submit value="Create person"/>
</@ww.form>
</body>
</html>

程序逻辑继续使用starter项目里面的内容。
xwork中配置如下:
<action name="newPerson" class="com.acme.CreatePerson">
            <result name="success" type="redirect">listPeople.action</result>
            <!-- 
            <result name="input" type="dispatcher">newPerson.jsp</result>
            -->
            <result name="input" type="freemarker">newPerson.ftl</result>
        </action>
两个"success"的result轮流切换。

试验结果如下:
1、webwork.properties配置如下,使用vm的template,此时使用两种result的结果是相同的:
webwork.ui.theme=simple
webwork.ui.templateDir=template/archive
webwork.ui.templateSuffix=vm
显示结果,显然onsubmit没有输出,此时datapicker标签没有输出(因为老的vm模板没有提供datapicker标签):
<form namespace="/" id="newPerson" name="newPerson" action="/starter/newPerson.action">
2、webwork.properties配置如下,此时使用ftl的result和ftl的template:
webwork.ui.theme=simple
webwork.ui.templateDir=template
webwork.ui.templateSuffix=ftl
显示结果,onsubmit输出正常:
<form id="newPerson" name="newPerson" onsubmit="dosomething" action="/starter/newPerson.action">

3、webwork.properties配置如下,此时使用jsp的result和ftl的template:
webwork.ui.theme=simple
webwork.ui.templateDir=template
webwork.ui.templateSuffix=ftl

显示结果,onsubmit没有输出:
<form namespace="/" id="newPerson" name="newPerson" action="/starter/newPerson.action">

此时尝试使用theme="xhtml"还是没有输出。

从上面的测试来看,似乎是个bug,可是在webwork网站却没有查到相关issue,怀疑是我这里的环境问题。以上测试在tomcat 5.5.12 or Weblogic 9.1 @ SUN JDK 1.5b6上面进行。希望哪位解决了上面问题指导一下我,谢谢。
   发表时间:2006-01-20  
我这里也是,submit按钮也有这个问题,jsp的view
0 请登录后投票
   发表时间:2006-01-20  
确实是一个bug,我提交到opensymphony的JIRA了。
0 请登录后投票
   发表时间:2006-01-20  
robbin 写道
确实是一个bug,我提交到opensymphony的JIRA了。


谢谢robbin,过两天check out代码看看。
0 请登录后投票
   发表时间:2006-01-20  
这个bug的原因是这样的:

com.opensymphony.webwork.views.jsp.ui.FormTag的populateParams()方法最后一行,请看:
form.setOnselect(onsubmit);


哈哈,把onsubmit里面的东西给了onselect tag去了。纯属开发人员大意!如果你等不及下一个bugfix版本,你可以自行修改这个地方就正常了,改成:

form.setOnsubmit(onsubmit);
0 请登录后投票
   发表时间:2006-01-20  
robbin 写道
这个bug的原因是这样的:

com.opensymphony.webwork.views.jsp.ui.FormTag的populateParams()方法最后一行,请看:
form.setOnselect(onsubmit);


哈哈,把onsubmit里面的东西给了onselect tag去了。纯属开发人员大意!如果你等不及下一个bugfix版本,你可以自行修改这个地方就正常了,改成:

form.setOnsubmit(onsubmit);


哈哈,这个疏忽真够搞笑的,我说那天看value stack里面的数据本来正确的,却看不到显示,原来如此。谢谢robbin,回去patch一下。
0 请登录后投票
论坛首页 Java企业应用版

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