论坛首页 Java企业应用论坛

关于使用annotation实现struts2中的"dispatchAction"

浏览 7913 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-05-09  
如题,谢谢。
通过配置文件好象很好实现,主要定义多个action节点。指定method=“*”就行。
但是我现在遇到的问题是全部想使用annotation。那么怎么才能在struts2中实现类似struts中的dispatchAction功能呢。这样我将来避免只有一个execute方法。将来使用annotation的校验也可以针对各个crud方法做控制。而不是只针对一个execute。
再次感谢。
   发表时间:2007-05-09  
再把问题描述一下。
我尝试使用在action中将一个execute拆成多个方法。然后,在一个请求的url中使用/aaa.action?method=bbb这样的方式访问不成。如果使用配置文件一般按照下面的配置没有问题,比如定义如下:
 
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <package name="Struts2_CRUD_DEMO" extends="struts-default" namespace="/Book">
        <action name="List" class="tutorial.action.BookAction" method="list">
            <result>List.jsp</result>
        </action>
        <action name="Edit" class="tutorial.action.BookAction" method="load">
            <result>Edit.jsp</result>
        </action>
        <action name="Store" class="tutorial.action.BookAction" method="store">
            <result type="redirect">List.action</result>
        </action>
        <action name="Remove" class="tutorial.action.BookAction" method="remove">
            <result type="redirect">List.action</result>
        </action>
    </package>
</struts>

可是使用annotation,好象没有对应的annotation指定method。不知该如何解决。
0 请登录后投票
   发表时间:2007-05-09  
用/aaa!bbb.action这样的方式可以,!后面的是方法名。
0 请登录后投票
   发表时间:2007-05-09  
引用
用/aaa!bbb.action这样的方式可以,!后面的是方法名。

struts2的文档中好象没有这样的介绍。我现在系统连不上数据库。暂时验证不了。
能否给我一些相关的资料。谢谢。
0 请登录后投票
   发表时间:2007-05-09  
那是你没有仔细看,struts2的官方文档中提到过这种方法,但是好像没有详细说明。
0 请登录后投票
   发表时间:2007-05-09  
这样折出来是成功的。谢谢janh.
不过拆分出来有一个问题:比如action中有一个createRole方法。页面表单请求如下:
<s:form action="/privilege/role!createRole.action" method="post"
				validate="true" theme="simple">
				
。。。。。。。。。。。。。
			</s:form>

当我在form中指定form的action的属性为上时,总是报404 error.
这是为什么?
0 请登录后投票
   发表时间:2007-05-09  
我在页面中使用<a href="/privilege/role!createRole.action">aaa</a>是访问到对应的action方法。难道只有第一次请求可以这样吗?那么解决办法是什么?redirect吗?如何实现。谢谢大家,感谢janh给我的帮助。
0 请登录后投票
   发表时间:2007-05-09  
直接用<form action="" ></form>,因为没有定义action map,所以用<s:form >也没有什么意义,而且好像它对!处理不好。
0 请登录后投票
   发表时间:2007-05-09  
谢谢。janh,十分感谢。正如你所说,改成form没有问题。对s:form还是不太熟悉。比如它的validate属性。看到有些资料设置为true代表客户端校验。如果我使用form的话,是不是会变成后台检验。我对struts2的熟悉过程就是通过这个项目突击。多多指导,一起进步。
0 请登录后投票
   发表时间:2007-05-09  
问题总是没完没了。郁闷!
现在方法都拆出来了,按表单提交也没有问题了。
但是当我在action中的每个方法加入@validations(.....)时,却出现问题。比如有菜单项代码              
<td height="28" class="cd_2_1" id=dpdivbutton15><a class="cd_1" id="dpdivlink15"
   onclick=changedpdiv(15) href="${ctx }/privilege/role!searchRole.action"  target="right">角色权限设置</a></td>
当我在action中给searchRole方法加上了@validations(....)时,每当点击菜单项“创建角色”时,就会跑到其它页面。我在后台跟踪,会执行到其它的方法里去。当我把@validations去掉就没有问题。怪呀。我当初拆分方法的目的就是想很爽的使用@validations做检验。这是为什么呢?
0 请登录后投票
论坛首页 Java企业应用版

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