struts2中的action标签用于在JSP页面中直接调用一个Action,通过指定executeResult参数,还可以将该Action的处理结果包含到本页面中来。
使用action标签可以允许JSP页面直接调用Action,因为需要调用Action,故可以指定需要被调用的Action的name以及namespace。如果指定了executeResult参数的值为true,该标签还会把Action中处理的结果包含到本页面中来。使用action标签有如下的几个属性:
id: 可选属性,该属性可以作为该Action的引用ID
name:
必填属性,指定调用哪个Action
namespace:
可选属性,指定该Action所在的是哪个空间
executeResult: 可选属性,指定是否将Action处理后的结果包含到本页面中,默认值为false
ignoreContextParams: 可选参数,指定该页面的请求参数是否需要传入调用的Action,默认值为false。
看下面的例子:
Action类
package com.action;
import com.opensymphony.xwork2.ActionSupport;
public class TagAction extends ActionSupport {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String execute() throws Exception {
return super.execute();
}
}
struts.xml配置文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="index" class="com.action.TagAction">
<result>
success.jsp
</result>
</action>
</package>
</struts>
在下面的JSP页面中我们使用<s:action>标签来调用Action
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<s:action name="index" namespace="/" executeResult="true">
</s:action>
</body>
</html>
success.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
你好${requestScope.name}
</body>
</html>