Webwork 2.2的form tag在使用jsp view时onsubmit不工作

起因是使用Michael Chen的JSValidation,需要手动写onsubmit,结果居然发现webwork 2.2的正式版本里面的form tag里面的onsubmit在使用jsp view的时候没法输出,苦恼于此。暂时通过修改模板修改了一下,但是如此很不爽。所以就想测试一下到底是不是我们项目的问题还是ww 2.2的问题。但一直太忙,今天才抽出功夫测。以下是测试纪录,希望知道缘由的朋友帮我指点一下。

测试使用Webwork发行包中演示的starter项目,其中使用了ftl模板作为表现层,我按它的方式制造了newPerson.jsp。
下面是两个页面的源文件:
newPerson.jsp

java代码: 
<%@ 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

java代码: 
<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中配置如下:

java代码: 
<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的结果是相同的:

java代码: 
webwork.ui.theme=simple
webwork.ui.templateDir=template/archive
webwork.ui.templateSuffix
=vm

显示结果,显然onsubmit没有输出,此时datapicker标签没有输出(因为老的vm模板没有提供datapicker标签):

java代码: 
<form namespace="/" id="newPerson" name="newPerson" action="/starter/newPerson.action">

2、webwork.properties配置如下,此时使用ftl的result和ftl的template:

java代码: 
webwork.ui.theme=simple
webwork.ui.templateDir=template
webwork.ui.templateSuffix
=ftl

显示结果,onsubmit输出正常:

java代码: 
<form id="newPerson" name="newPerson" onsubmit="dosomething" action="/starter/newPerson.action">


3、webwork.properties配置如下,此时使用jsp的result和ftl的template:

java代码: 
webwork.ui.theme=simple
webwork.ui.templateDir=template
webwork.ui.templateSuffix
=ftl


显示结果,onsubmit没有输出:

java代码: 
<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上面进行。希望哪位解决了上面问题指导一下我,谢谢。

One thought on “Webwork 2.2的form tag在使用jsp view时onsubmit不工作”

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.