`

Hack struts2 json plugin: dynamically set includeProperty

阅读更多
  Here is not basic use of struts2 json plugin but how to hack the code to set includeProperty dynamically, in othter words, set with action field not in xml file.
 
  Train of thought:
  I have a demand of changing includeParameter values when different ip request, I wonder whether I could set like this:
         <result type="json">  
                <param name="includeParameter">${allowedFields}</param>  
         </result>  

   But failed.As we know, we can set filename like this when download file
<action name="download" class="action.DownloadAction">
        <result name="success" type="stream">
            <param name="contentType">application/octet-stream</param>
            <param name="contentDisposition">attachment;filename="${filename}"</param>
            <param name="bufferSize">1024</param>
        </result>
       
</action> 


do the hack:
    I try to find out the different between json plugin and download plugin and find the way out to copy the ability.
    Extend the json result class, add conditionalParse function, and filter in execute function.
public class JSONDynamicResult extends JSONResult {
    protected String conditionalParse(String param, ActionInvocation invocation) {
      
            return TextParseUtil.translateVariables(param, invocation.getStack(),
                    new TextParseUtil.ParsedValueEvaluator() {
                        public Object evaluate(Object parsedValue) {
                           
                            return parsedValue;
                        }
            });
       
    }

    public void execute(ActionInvocation invocation)
        throws Exception
    {
        ActionContext actionContext = invocation.getInvocationContext();
        HttpServletRequest request = (HttpServletRequest)actionContext.get("com.opensymphony.xwork2.dispatcher.HttpServletRequest");
        HttpServletResponse response = (HttpServletResponse)actionContext.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse");
        // fake code here, you shoud use a field to get "${allowedFields}" and test empty to compatible to origin use
        setIncludeProperty(conditionalParse("${allowedFields}",invocation));

        try
        {
            Object rootObject = readRootObject(invocation);
            writeToResponse(response, createJSONString(request, rootObject), enableGzip(request));
        }
        catch(IOException exception)
        {
            LOG.error(exception.getMessage(), exception, new String[0]);
            throw exception;
        }
    }

}



last set the result class

<result-types>
            <result-type name="json" class="your.parckage.JSONDynamicResult "/>
</result-types>

分享到:
评论

相关推荐

    struts2-json-plugin-2.3.24-API文档-中文版.zip

    赠送jar包:struts2-json-plugin-2.3.24.jar; 赠送原API文档:struts2-json-plugin-2.3.24-javadoc.jar; 赠送源代码:struts2-json-plugin-2.3.24-sources.jar; 赠送Maven依赖信息文件:struts2-json-plugin-...

    struts2 json plugin jar包

    struts2 json plugin jar包

    json-lib-2.1.jar和struts2-json-plugin-2.1.8.1.jar

    `struts2-json-plugin-2.1.8.1.jar` 则是Struts 2框架的一个插件,主要用于增强Struts 2对JSON的支持。Struts 2是一款非常流行的MVC(Model-View-Controller)框架,用于构建企业级的Java Web应用程序。这个插件允许...

    struts2-json-plugin

    struts2-json-plugin,Struts JSON插件

    struts2-json-plugin-2.3.8.jar

    Struts2 JSON Plugin是针对Apache Struts2框架的一个重要组件,版本为2.3.8。这个插件主要的功能是让Struts2应用程序能够轻松地处理JSON(JavaScript Object Notation)数据格式,使得Web应用可以方便地进行JSON序列...

    struts2-json-plugin源码

    `struts2-json-plugin`是Struts2的一个插件,它使得Struts2能够处理JSON请求和响应,无需额外的配置或库。这个插件不仅包含了源码,还包含了必要的配置文件和类,使得开发者可以深入理解其工作原理并进行自定义扩展...

    struts2-json-plugin-2.1.8jar包.zip

    Struts2 JSON Plugin是Apache Struts框架的一个扩展插件,主要功能是支持Struts2应用程序与JSON(JavaScript Object Notation)格式的数据进行交互。JSON是一种轻量级的数据交换格式,广泛用于Web服务和AJAX...

    struts2-json-plugin-2.1.8.1.jar

    Struts2 JSON Plugin是Apache Struts框架的一个扩展插件,主要功能是为Struts2提供JSON(JavaScript Object Notation)支持。JSON是一种轻量级的数据交换格式,它使得客户端(通常为JavaScript)与服务器端之间进行...

    struts2+json

    在Struts2中集成JSON支持,首先需要添加相应的依赖,比如struts2-json-plugin,这个插件提供了JSON结果类型。当Action执行完毕后,可以返回一个JSON结果类型,Struts2会自动将Action的属性转换为JSON格式并返回给...

    struts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jar

    struts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jarstruts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jar

    使用Struts2的JSON插件来实现JSON数据传递

    首先,你需要将struts2-json-plugin相关的JAR文件添加到项目的类路径中。然后,在Struts2的配置文件struts.xml中启用JSON插件,通常通过以下配置实现: ```xml &lt;constant name="struts.enable.SlashesInActionNames...

    struts2-json-plugin-2.2.3.1

    struts2-json-plugin-2.2.3.1能用的包

    Struts2 Json示例(Maven项目)

    -- Struts2 JSON Plugin --&gt; &lt;groupId&gt;org.apache.struts &lt;artifactId&gt;struts2-json-plugin &lt;version&gt;2.x.x ``` 替换`2.x.x`为当前Struts2的版本号。Maven会自动下载这些依赖并管理它们,使得开发者可以...

    struts-json-plugin-2.1.8.jar struts2-junit-plugin-2.1.8.jar json-lib-2.1.jar

    首先,我们来看`struts-json-plugin-2.1.8.jar`,这是Struts2的JSON插件,它允许Struts2的动作类直接返回JSON格式的数据,方便前端进行Ajax请求处理。该插件在2.1.8版本中修复了若干bug,并提供了对JSON输出的支持。...

    struts-2.5.20-all(含struts2-json-plugin.jar)jar资源

    总结来说,"struts-2.5.20-all"压缩包提供了完整的Struts 2框架,包括Action、Interceptor、ValueStack等核心组件,而`struts2-json-plugin.jar`则增强了Struts 2对JSON数据的支持,使得开发基于JSON的Web应用更加...

    struts2所需的包和Struts2_json所需包

    2. **Struts2 JSON插件**:Struts2提供了一个JSON插件(`struts2-json-plugin.jar`),它允许我们将Action的返回值直接转换为JSON格式,便于前后端数据交换。这个插件简化了原本需要手动序列化对象到JSON字符串的...

    struts2 相关jar包 包含json-lib-2.1.jar+struts2-json-plugin-2.1.8.1.jar

    这个压缩包包含了两个关键的组件:json-lib-2.1.jar和struts2-json-plugin-2.1.8.1.jar,它们是Struts2支持JSON(JavaScript Object Notation)序列化和反序列化的关键。 1. **json-lib-2.1.jar**: JSON是一种轻...

    struts2与json整合

    在探讨“Struts2与JSON整合”的主题时,我们深入分析了如何在Struts2框架中集成JSON技术,实现前后端数据的高效交互。Struts2作为一款流行的Java Web开发框架,提供了丰富的功能来简化Web应用程序的开发过程。而JSON...

    struts2-json-plugin-2.1.8.zip_Java 8_json-plugin-2.1.8

    Struts2 JSON Plugin 2.1.8 是一个专门针对Apache Struts2框架设计的插件,用于支持JSON(JavaScript Object Notation)数据格式的处理。这个插件使得Struts2应用程序能够方便地生成和消费JSON,从而在Web应用中实现...

Global site tag (gtag.js) - Google Analytics