Struct1.x中Action和DispatchAction的使用

       在java web开发中,原始的配置action都是使用一个action类实现一个功能,如果工程项目够大,action类数目会很多,就增加了该项目后期的维护难度。解决的方法,这里给大家介绍一个struts包下的action子类,DispatchAction。

     

DispatchAction继承自Action类,它是一个 抽象类,封装了一些基础方法,来解决使用一个Action处理多个操作的能力,这就是DispatchAction最大的用途,它可以帮助我们用一个Action类,封装一套类似的操作方法,节省了类的数目,同时也减轻了后期维护的困难。
DispatchAction中主要包括以下几个方法:
protected ActionForward dispatchMethod
protected java.lang.reflect.Method getMethod
protected java.lang.String getMethodNameDispatchAction在配置上与标准的Action稍有不同,就是要在Action配置中多一个parameter属性,这个属性将指导DispatchAction找到对应的方法,例如这样配置:
<action path="/saveSubscription" type="org.apache.struts.actions.DispatchAction" name="subscriptionForm" scope="request" input="/subscription.jsp" parameter="method"/>
parameter的属性值是可以任意起的,只要你记得在传参数的时候统一就可以了。比如我写了一个类似这样的Action,它继承自DispatchAction类,包含了三个操作方法,有Add(),Update(),Delete()。当我想要调用这个Action的Update操作时,提交的URL应该类似这样的:
saveSubscription.do?method=Update
就是这么简单,不过非常方便我们程序员了,开发中我感觉的确省了好多代码,至少以前的三个类文件变成了现在一个类了,而且在后期维护的时候感觉也是方便很多。
需要注意的是:在调用DispatchAction的时候method参数是不能为空的,如果空,DispatchAction会调用unspecified方法并 抛出异常
另外一种就是在jsp页面加入一个隐藏域
<input type="hidden" name="oparator" value="getFangwuByUid" />
然后用表单提交 那么 Struts xml配置文件中就改成
<action path="/getFangwu" name="fangwuForm"
type="com.zf_sh.action.FangWuAction" parameter="oparator">
配置文件中的parameter 值就是jsp页面隐藏域的值
其他的和Action的配置没有太大的区别 这里的名字是随便取的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以使用列表推导式来实现这个目标,代码如下: ``` result = [s.array1 for s in A] ``` 这将会返回一个包含 `struct1.array1` 和 `struct2.array1` 的列表 `result`。 ### 回答2: 要获取A每个struct元素的array1,需要按照以下步骤操作: 1. 创建一个空列表result_list,用于存储array1的值。 2. 遍历A列表的每个元素struct,可以通过使用循环来实现。 3. 在循环,通过struct.array1来获取当前struct的array1的值,并将其添加到result_list。 4. 循环结束后,result_list存储了A每个struct元素的array1的值。 实例如下: ```python A = [struct1, struct2] # 假设已经定义了struct1和struct2 result_list = [] # 创建空的结果列表 for struct in A: result_list.append(struct.array1) # 将每个struct元素的array1值添加到结果列表 print(result_list) ``` 在上述代码,我们通过遍历A的每个元素struct,先访问struct的array1属性并将其值添加到result_list。最后,我们打印出result_list,即得到了[struct1.array1, struct2.array1]的值。 ### 回答3: 可以使用Python的列表解析来实现这个需求。 假设A是一个包含两个结构体的列表,结构体1和结构体2,每个结构体都有一个名为array1的属性。 要获取A每个结构体的array1属性,可以使用列表解析来遍历A,然后取出每个结构体的array1属性,结果以列表的形式返回。 具体代码如下: ```python A = [struct1, struct2] # 结构体列表 result = [struct.array1 for struct in A] # 获取每个结构体的array1属性 print(result) ``` 代码执行后,会输出包含结构体1和结构体2的array1属性的列表。 注意,上述代码struct1和struct2是结构体的变量,需要替换成具体的结构体实例。而且,数组的“[ ]”括号里面只有成对的逗号隔开的元素,没有其他的符号。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值