struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lukasz Lenart (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (WW-4846) Not able to convert Spring object to the JSON response
Date Mon, 04 Sep 2017 09:55:00 GMT

     [ https://issues.apache.org/jira/browse/WW-4846?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Lukasz Lenart updated WW-4846:
------------------------------
    Description: 
Hi,

I am using latest version of struts struts-2.5.12 and and spring 4.1 as advised. I am having
an issue in JSON response. There is an action class which is returning Spring request scoped
object as JSON response however I am getting error as below 

{noformat}
ERROR ExceptionMappingInterceptor org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException:
org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException:
java.lang.reflect.InvocationTargetException
 org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException:
org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException:
java.lang.reflect.InvocationTargetException
	at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:269)
	at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:197)
	at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:182)
	at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:143)
	at org.
{noformat}

Any idea what's wrong here ? I am using Java 1.8. I think below code in JSONWriter is not
working as expected

{code:java}
protected Method findBaseAccessor(Class clazz, Method accessor) {
        Method baseAccessor = null;
        if (clazz.getName().contains("$$EnhancerByCGLIB$$")) {
            try {
                baseAccessor = Thread.currentThread().getContextClassLoader().loadClass(
                        clazz.getName().substring(0, clazz.getName().indexOf("$$"))).getMethod(
                        accessor.getName(), accessor.getParameterTypes());
            } catch (Exception ex) {
                LOG.debug(ex.getMessage(), ex);
            }
        } else if (clazz.getName().contains("$$_javassist")) {
            try {
                baseAccessor = Class.forName(
                        clazz.getName().substring(0, clazz.getName().indexOf("_$$")))
                        .getMethod(accessor.getName(), accessor.getParameterTypes());
            } catch (Exception ex) {
                LOG.debug(ex.getMessage(), ex);
            }
            
        //in hibernate4.3.7,because javassist3.18.1's class name generate rule is '_$$_jvst'+...
        } else if(clazz.getName().contains("$$_jvst")){
            try {
                baseAccessor = Class.forName(
                        clazz.getName().substring(0, clazz.getName().indexOf("_$$")))
                        .getMethod(accessor.getName(), accessor.getParameterTypes());
            } catch (Exception ex) {
                LOG.debug(ex.getMessage(), ex);
            }
        }
        else {
            return accessor;
        }
        return baseAccessor;
    }
{code}

  was:
Hi,

I am using latest version of struts struts-2.5.12 and and spring 4.1 as advised. I am having
an issue in JSON response. There is an action class which is returning Spring request scoped
object as JSON response however I am getting error as below 

ERROR ExceptionMappingInterceptor org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException:
org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException:
java.lang.reflect.InvocationTargetException
 org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException:
org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException:
java.lang.reflect.InvocationTargetException
	at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:269)
	at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:197)
	at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:182)
	at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:143)
	at org.

Any idea what's wrong here ? I am using Java 1.8. I think below code in JSONWriter is not
working as expected

protected Method findBaseAccessor(Class clazz, Method accessor) {
        Method baseAccessor = null;
        if (clazz.getName().contains("$$EnhancerByCGLIB$$")) {
            try {
                baseAccessor = Thread.currentThread().getContextClassLoader().loadClass(
                        clazz.getName().substring(0, clazz.getName().indexOf("$$"))).getMethod(
                        accessor.getName(), accessor.getParameterTypes());
            } catch (Exception ex) {
                LOG.debug(ex.getMessage(), ex);
            }
        } else if (clazz.getName().contains("$$_javassist")) {
            try {
                baseAccessor = Class.forName(
                        clazz.getName().substring(0, clazz.getName().indexOf("_$$")))
                        .getMethod(accessor.getName(), accessor.getParameterTypes());
            } catch (Exception ex) {
                LOG.debug(ex.getMessage(), ex);
            }
            
        //in hibernate4.3.7,because javassist3.18.1's class name generate rule is '_$$_jvst'+...
        } else if(clazz.getName().contains("$$_jvst")){
            try {
                baseAccessor = Class.forName(
                        clazz.getName().substring(0, clazz.getName().indexOf("_$$")))
                        .getMethod(accessor.getName(), accessor.getParameterTypes());
            } catch (Exception ex) {
                LOG.debug(ex.getMessage(), ex);
            }
        }
        else {
            return accessor;
        }
        return baseAccessor;
    }



> Not able to convert Spring object to the JSON response
> ------------------------------------------------------
>
>                 Key: WW-4846
>                 URL: https://issues.apache.org/jira/browse/WW-4846
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Core Results, Plugin - JSON
>    Affects Versions: 2.5.12
>            Reporter: Vijay Srivastava
>            Priority: Blocker
>             Fix For: 2.5.x
>
>
> Hi,
> I am using latest version of struts struts-2.5.12 and and spring 4.1 as advised. I am
having an issue in JSON response. There is an action class which is returning Spring request
scoped object as JSON response however I am getting error as below 
> {noformat}
> ERROR ExceptionMappingInterceptor org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException:
org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException:
java.lang.reflect.InvocationTargetException
>  org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException:
org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException:
java.lang.reflect.InvocationTargetException
> 	at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:269)
> 	at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:197)
> 	at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:182)
> 	at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:143)
> 	at org.
> {noformat}
> Any idea what's wrong here ? I am using Java 1.8. I think below code in JSONWriter is
not working as expected
> {code:java}
> protected Method findBaseAccessor(Class clazz, Method accessor) {
>         Method baseAccessor = null;
>         if (clazz.getName().contains("$$EnhancerByCGLIB$$")) {
>             try {
>                 baseAccessor = Thread.currentThread().getContextClassLoader().loadClass(
>                         clazz.getName().substring(0, clazz.getName().indexOf("$$"))).getMethod(
>                         accessor.getName(), accessor.getParameterTypes());
>             } catch (Exception ex) {
>                 LOG.debug(ex.getMessage(), ex);
>             }
>         } else if (clazz.getName().contains("$$_javassist")) {
>             try {
>                 baseAccessor = Class.forName(
>                         clazz.getName().substring(0, clazz.getName().indexOf("_$$")))
>                         .getMethod(accessor.getName(), accessor.getParameterTypes());
>             } catch (Exception ex) {
>                 LOG.debug(ex.getMessage(), ex);
>             }
>             
>         //in hibernate4.3.7,because javassist3.18.1's class name generate rule is '_$$_jvst'+...
>         } else if(clazz.getName().contains("$$_jvst")){
>             try {
>                 baseAccessor = Class.forName(
>                         clazz.getName().substring(0, clazz.getName().indexOf("_$$")))
>                         .getMethod(accessor.getName(), accessor.getParameterTypes());
>             } catch (Exception ex) {
>                 LOG.debug(ex.getMessage(), ex);
>             }
>         }
>         else {
>             return accessor;
>         }
>         return baseAccessor;
>     }
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message