【struts2】自定义ResultMapBuilder

JSP目录结构

Action类

注:Action是通过http://blog.youkuaiyun.com/blackbeauty1024/article/details/43965139文章中第三中方式创建的buildResultCode应该放在BaseAction中,这里放在UserAction中只是方便大家阅读



import com.action.base.BaseAction;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionProxy;

public class UserAction extends BaseAction {
	private static final long serialVersionUID = 8502420792396150103L; 
	public String list()throws Exception{
		return buildResultCode();
	}
	public String index()throws Exception{
		return buildResultCode();
	}
	public String detail()throws Exception{
		return buildResultCode();
	}
	public String buildResultCode(){
		ActionProxy actionProxy = ActionContext.getContext().getActionInvocation().getProxy();
		return actionProxy.getActionName()+"-"+actionProxy.getMethod();
	}
}

ResultMapBuilder

public class ResultMapBuilder extends DefaultResultMapBuilder {
	private ConventionsService conventionsService;
    @Inject
    public ResultMapBuilder(ServletContext servletContext, Container container,
            @Inject("struts.convention.relative.result.types") String relativeResultTypes) {
    	super(servletContext, container, relativeResultTypes);
    	this.conventionsService=container.getInstance(ConventionsService.class, container.getInstance(String.class, ConventionConstants.CONVENTION_CONVENTIONS_SERVICE));
    }

	@Override
	public Map<String, ResultConfig> build(Class<?> actionClass,
			Action annotation, String actionName, PackageConfig packageConfig) {
		final String namespace = packageConfig.getNamespace();
		Map<String, ResultConfig> resultConfigMap = null;
		if("".equals(namespace)){
			resultConfigMap = new HashMap<String, ResultConfig>();
		}else{
			resultConfigMap = super.build(actionClass, annotation, actionName, packageConfig);
		}
		String defaultResultPath = conventionsService.determineResultPath(actionClass);
        if (!defaultResultPath.endsWith("/")) {
            defaultResultPath = defaultResultPath + "/";
        }
        
        if (namespace != null && namespace.startsWith("/")) {
             defaultResultPath = defaultResultPath + namespace.substring(1);
        } else if (namespace != null) {
            defaultResultPath = defaultResultPath + namespace;
        }

        // Add that ending slash for concatenation
        if (!defaultResultPath.endsWith("/")) {
            defaultResultPath += "/";
        }

        String resultPrefix = defaultResultPath + actionName;<pre name="code" class="java"><span style="white-space:pre">	</span>defaultResultPath=resultPrefix+"/";
Map<String, ResultConfig> results = new HashMap<String, ResultConfig>(); Map<String, ResultTypeConfig> resultsByExtension = conventionsService.getResultTypesByExtension(packageConfig); createFromResources(actionClass, results, defaultResultPath, resultPrefix, actionName, packageConfig, resultsByExtension);//扫描webapp\WEB-INF\content\user目录下的jsp创建ResultConfig resultConfigMap.putAll(results);return resultConfigMap;}}

 

配置ResultMapBuilder

<bean type="org.apache.struts2.convention.ResultMapBuilder" name="resultMapBuilder" class="com.test.support.struts2.ResultMapBuilder"/>
<constant name="struts.convention.resultMapBuilder" value="resultMapBuilder"/>

访问http://localhost:8080/projectName/user!list.do可以访问user-list.jsp页面


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值