StrutsResultSupport的使用

在有特殊情况时;如果没有异常信息,但是有错误并且有错误信息等内容;此时也需要进行友好的错误处理的话,那么可以借助StrutsResultSupport 返回结果类型来实现特定处理。此种方式先需要继承StrutsResultSupport ,然后可以在子类中获取本次请求的相关信息,再根据相关信息进行结果处理:

 

package commons.struts2;  
import <a href="http://lib.csdn.net/base/java" class='replace_word' title="Java 知识库" target='_blank' style='color:#df3434; font-weight:bold;'>Java.io.PrintWriter;  
import javax.servlet.http.HttpServletResponse;  
import org.apache.struts2.dispatcher.StrutsResultSupport;  
import com.opensymphony.xwork2.ActionInvocation;  
/** 
 * result type for output string in action 
 *  
 * @author songwei,yaolei Example: 
 *  
 *  
 *  
 **stringName**  
 *  
 *  
 */  public class StringResultType extends StrutsResultSupport {  
    private static final long serialVersionUID = 1L;  
    private String contentTypeName;  
    private String stringName = "";  
    public StringResultType() {  
        super();  
    }  
    public StringResultType(String location) {  
        super(location);  
    }  
    protected void doExecute(String finalLocation, ActionInvocation invocation)  
            throws Exception {  
        HttpServletResponse response = (HttpServletResponse) invocation  
                .getInvocationContext().get(HTTP_RESPONSE);  
        // String contentType = (String)  
        // invocation.getStack().findValue(conditionalParse(contentTypeName,  
        // invocation));  
        String contentType = conditionalParse(contentTypeName, invocation);  
        if (contentType == null) {  
            contentType = "text/plain; charset=UTF-8";  
        }  
        response.setContentType(contentType);  
        PrintWriter out = response.getWriter();  
        // String result = conditionalParse(stringName, invocation);  
        String result = (String) invocation.getStack().findValue(stringName);  
        out.println(result);  
        out.flush();  
        out.close();  
    }  
    public String getContentTypeName() {  
        return contentTypeName;  
    }  
    public void setContentTypeName(String contentTypeName) {  
        this.contentTypeName = contentTypeName;  
    }  
    public String getStringName() {  
        return stringName;  
    }  
    public void setStringName(String stringName) {  
        this.stringName = stringName;  
    }  
}

 

package test;  
import com.opensymphony.xwork2.ActionSupport;  
public class MyAction extends ActionSupport{  
    String  result="abc";  
    public String ajax() {  
        return "ajaxResponse";  
    }  
    // getter && setter  
    public String getResult() {  
        return result;  
    }  
    public void setResult(String result) {  
        this.result = result;  
    }  
      
}
<?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="test" extends="struts-default">  
        <result-types>  
            <result-type name="string" class="test.StringResultType">result-type>  
        result-types>  
          
        <action name="myAction" class="test.MyAction" >  
            <result name="ajaxResponse" type="string">  
                <param name="stringName">resultparam>  
            result>  
        action>  
    package>  struts>

这里定义返回Action的String  result变量,即“abc”。

 

上一篇:SpringCloud+Dubbo实现自定义Filter过滤器,关键配置


下一篇:Spring事务管理简单原理