html5中action调用jsp,如何在JSP页面中直接调用Action

头段时间在做项目过程中,需要在JSP页面中直接调用一个已有的Action,从而达到Action复用的目的,而无需重复写相同的代码段。但在网上找了很多资料,折腾了很久都没解决问题,后来还是查找了我的那本红书(李刚写的《轻量级Java

EE企业应用实战》),终于解决了问题。原来,实现这个需求很简单,只需在jsp页面中使用struts2的s:action标签来调用已有的Action就行了。今天抽空整理下这个标签的用法,以备后用。

s:action标签:

使用action标签可以允许在JSP页面中直接调用Action,因为需要调用Action,所以可以指定需要被调用Action的name及namespace。如果指定了executeResult 参数的属性值为true,该标签还会把Action的处理结果(视图资源)包含到本页面中来。

使用action标签有如下几个属性:

qvar:这是一个可选属性,一旦定义了该属性,该Action将被放入ValueStack中,该属性可用id代替,但推荐使用var。

qname:这是一个必填属性,通过该属性指定该标签调用哪个Action。

qnamespace:这是一个可选属性,该属性指定该标签调用的Action所在的namespace。

qexecuteResult:这是一个可选属性,该属性指定是否要将Action的处理结果页面包含到本页面。该属性值默认值是false,即不包含。

qignoreContextParams:这是一个可选参数,它指定该页面中的请求参数是否需要传入调用的Action。该参数的默认值是false,即将本页面的请求参数传入被调用的Action。

下面是本示例应用中的Action类,这个Action类里包含了两个处理逻辑。看下面的Action类代码。

public class TagAction extends ActionSupport

{

//封装用户请求参数的author属性

private String author;

//省略author属性的setter和getter方法

...

//定义第一个处理逻辑

public String execute() throws Exception

{

return "done";

}

//定义第二个处理逻辑

public String login() throws Exception

{

ActionContext.getContext().

put("author", getAuthor());

return "done";

}

}

上面的Action类包含了两个处理逻辑,可以在struts.xml文件中通过指定method属性来将该Action类映射成两个逻辑Action。下面是在struts.xml文件中配置该Action的配置代码片段。

succ.jsp

method="login">

loginSucc.jsp

上面配置文件将一个Action类定义成两个逻辑Action,可以在JSP页面中通过标签来调用这两个逻辑Action。

下面是JSP页面中使用

下面调用第一个Action,并将结果包含到本页面中。


下面调用第二个Action,并将结果包含到本页面中。

但阻止本页面请求参数传入Action。

ignoreContextParams="true"/>


下面调用第三个Action,且并不将结果包含到本页面中。

本页面是否可访问?

在上面页面中的粗体字代码三次调用了目标Action,通过指定executeResult属性来控制是否将处理结果包含到本页面中,还通过指定ignoreContextParams属性来决定是否将本页面的请求参数传入Action。

除此之外,上面页面代码中代码试图在本页面访问所调用Action对应Context里的author属性。但由于设置了executeResult="false",因而页面中无法访问该属性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值