论坛首页 Java企业应用论坛

使用XDoclet 1.2.2生成WebWork2的配置文件(From cjsdn)

浏览 15934 次
该帖已经被评为精华帖
作者 正文
   发表时间:2005-01-18  
WebWork2的核心是XWork,在开发过程中希望能够自动生成xwork.xml文件,这样岂不很方便,但是XDoclet 1.2.2只支持WebWork1,所以无法生成WW2的配置。opensymphony的WiKi网站上提供一个XDoclet的module,但是错误确实不少,文档没有,我修改了一下XDoclet的模板文件,同时也增加了文档说明,方便大家使用。相信不久XDoclet 1.3推出时,我修改的这个module也要over啦,只是提供大家在这段时间的使用。附件是我改动过的,你可以下载使用,下载后请改为jar后缀,jar文件不让上传,晕啊

文档:
XDoclet 1.2.2没有包含对WebWork2的支持,不过opensymphony提供了一个XDoclet的试用版模板,下面让我们看看如何利用这个模块生成WebWork2的核心XWork配置文件。
1 下载WebWork2的XDoclet模板,加入XDoclet运行库的目录下。
2 在Ant的build.xml进行WebWork2任务定义,然后编写执行配置文件生成的代码。
<taskdef name="Webwork2"
classname="xdoclet.modules.webwork2.Webwork2DocletTask" classpathref="project.classpath"/>
<WebWork2 destDir="${project.WEB-INF}" excludedtags="@version,@author" >
<fileset dir="${project.src}">
<include name="**/action/**/*Action.java"/>
</fileset>
<xworkxml xmlencoding="${project.encoding}"
mergeDir="${project.merge.directory}" />
</WebWork2>
WebWork2具体设置请参考XDoclet的xdoclet任务,这里主要是设置destDir和定义要处理的文件(fileset子元素)。子元素xworkxml主要负责XWork配置文件的生成,可以参考xdoclet任务下的xml子任务,xworkxml生成的文件名为xwork.xml,在mergetDir中,我们要溶入两个文件到xwork.xml文件中,一个是xwork-included.xml,所有文件内容将会包含在<xwork>元素下。另一个是all-package-included.xml,所有文件内容将包含在每一个<package>元素下。
3 WebWork2的Tag参考。我们需要在Java源码中添加XDoclet的tag,这样XDoclet才能处理这些Tag,这里是以“:”分隔namespace和tag-name的,而不是XDoclet标准的“.”分隔符,这里要注意一下。下面是一个添加了XDoclet标签的Action的部分代码:
/**
* @author <a href="mailto:youmail@yourdomain.com">jacky</a> Date: 2005-1-17
* @webwork2:package name="system" namespace="system"
* @webwork2:action name="system/logon" success="/index.jsp"
*/
public class LogonAction extends ActionSupport
{
……..
}
如果你想设置默认的namespace,请在webwork2:package标签中不要包含namespace属性即可。

WebWork2的Tag参考:
----- flowing is class level.
@webwork2:package
name=""
extends=""
namespace=""
abstract=""
externalReferenceResolver=""
includes="" //delimiter is ','

@webwork2:result-type
package=""
name=""
class=""

@webwork2.interceptor
name=""
package=""
class=""

@webwork2:interceptor-stack
name=""
package=""
interceptor-ref="" //delimiter is ','

@webwork2:result //for global-result
name=""
value=""
package=""
type=""

@webwork2:default-interceptor-ref
name=""
package=""

@webwork2:action
name="" //include namespace,such as “namespace/actioname”
bean-id=""
converter=""
param=""
success=""
result-type-success=""
error=""
result-type-error=""
input=""
result-type-input=""
interceptor-ref=""

@webwork2:result-param-success
name=""
value=""

@webwork2:result-param-error
name=""
value=""

@webwork2:result-param-input
name=""
value=""

@webwork2:custom-view
name=""
value=""
type=""

----- flowing is method level.
@webwork2:command
name=""
bean-id=""
converter=""
param=""
success=""
result-type-success=""
error=""
result-type-error=""
input=""
result-type-input=""
interceptor-ref=""

@webwork2:result-param-success
name=""
value=""

@webwork2:result-param-error
name=""
value=""

@webwork2:result-param-input
name=""
value=""

@webwork2:custom-view
name=""
value=""
type=""
   发表时间:2005-01-21  
请问web.xml for ww2有没有用xdoclet1.2.2生成的方法?
还有一些action-validation.xm。。。
0 请登录后投票
   发表时间:2005-02-17  
注释如下
/**
 * @author rtm 2005-1-26
 *
 * @webwork2:package name="login" 
 * @webwork2:interceptor-stack name="defaultComponentStack" package="login" interceptor-ref="component,defaultStack" 
 * @webwork2:default-interceptor-ref name="defaultStack" package="login" 
 * @webwork2:action name="login" success="sucess.jsp"  error="error.jsp" input="login.jsp" result-type-success="dispatcher" result-type-error="dispatcher" result-type-input="dispatcher" interceptor-ref="validationWorkflowStack" 
 */

生成的文件如下
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">

<xwork>

	<package name="login">

		<default-interceptor-ref name="defaultStack"/>

		<action  name="login" class="example.LoginAction">
			<result name="success" type="dispatcher">
				<param name="location">sucess.jsp</param>
			</result>  
			<result name="error" type="dispatcher">
			  	<param name="location">error.jsp</param>
			</result>  
			<result name="input" type="dispatcher">
			  	<param name="location">login.jsp</param>
			</result>  
			<interceptor-ref name="validationWorkflowStack"/>
		</action>

	</package>

</xwork>




interceptor-stack的那一段
<interceptors>
         <interceptor-stack name="defaultComponentStack">
              <interceptor-ref name="component"/>
              <interceptor-ref name="defaultStack"/>
         </interceptor-stack>
      </interceptors>

没有生成出来
0 请登录后投票
   发表时间:2005-02-19  
请使用merge功能,没有问题的。
0 请登录后投票
   发表时间:2005-08-30  
我添加了
 * @webwork2:package name="default" extends="webwork-default" includes="webwork-default.xml"
 * @webwork2:interceptor name="Test" package="default" class="com.songlai.action.Test"
 * @webwork2:interceptor-stack name="consoleStack" package="default" interceptor-ref="Test,model-driven,params"
 * @webwork2:default-interceptor-ref name="consoleStack" package="default"

却只生成
	<package name="default" extends="webwork-default">
		<interceptors>
			<interceptor name="Test" class="com.songlai.action.Test" />

			<interceptor-stack name="consoleStack">
				<interceptor-ref name="Test"/>
				<interceptor-ref name="model-driven"/>
				<interceptor-ref name="params"/>
			</interceptor-stack>
		</interceptors>

	</package>

本来还应该生成一句 <default-interceptor-ref name="consoleStack"/> !!的
其中我还一起测试了
@webwork2:result-type、@webwork2.interceptor、@webwork2:interceptor-stack、@webwork2:default-interceptor-ref,
但是仅仅按照模版生成了result-type,别的都没有生成出来,模板文件也看过了,还是一无所获,百思不得其解
0 请登录后投票
   发表时间:2005-08-30  
可以考虑使用xdoclet2的webwork模块.

不过我没用过.
0 请登录后投票
   发表时间:2005-08-31  
scud 写道
可以考虑使用xdoclet2的webwork模块.

不过我没用过.


我用的就是你说的那个,不过出了问题

一个很好的东西,却怎么样都过不去那里了
0 请登录后投票
   发表时间:2005-09-21  
没人研究一下吗?
这可是个很大的问题啊
0 请登录后投票
   发表时间:2005-09-21  
什么问题?可以访问啊...
0 请登录后投票
   发表时间:2005-09-23  
freeboat 写道
我添加了
 * @webwork2:package name="default" extends="webwork-default" includes="webwork-default.xml"
 * @webwork2:interceptor name="Test" package="default" class="com.songlai.action.Test"
 * @webwork2:interceptor-stack name="consoleStack" package="default" interceptor-ref="Test,model-driven,params"
 * @webwork2:default-interceptor-ref name="consoleStack" package="default"

却只生成
	<package name="default" extends="webwork-default">
		<interceptors>
			<interceptor name="Test" class="com.songlai.action.Test" />

			<interceptor-stack name="consoleStack">
				<interceptor-ref name="Test"/>
				<interceptor-ref name="model-driven"/>
				<interceptor-ref name="params"/>
			</interceptor-stack>
		</interceptors>

	</package>

本来还应该生成一句 <default-interceptor-ref name="consoleStack"/> !!的
其中我还一起测试了
@webwork2:result-type、@webwork2.interceptor、@webwork2:interceptor-stack、@webwork2:default-interceptor-ref,
但是仅仅按照模版生成了result-type,别的都没有生成出来,模板文件也看过了,还是一无所获,百思不得其解


看这个,我定义的 和 生成的差了好多
定义的好几项 都不生成。。。不知道为什么
0 请登录后投票
论坛首页 Java企业应用版

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