2016-08-01 32 views
-1

Ich machte einen Methodenaufruf objectMapper.writeValueAsString in EL so.Argumenttyp des parametrisierten Methodenaufrufs in EL

<%@ attribute name="actionItems" required="true" rtexprvalue="true" type="java.util.List"%> 
<jsp:useBean id="objectMapper"  class="org.codehaus.jackson.map.ObjectMapper" scope="page" /> 
<jsp:useBean id="actionItemsMap" class="java.util.HashMap" /> 
<c:set target="${actionItemsMap}" property="actionItems"   value="${objectMapper.writeValueAsString(actionItems)}" /> 

writeValueAsString nimmt einen Objektparameter in method signature. Es funktionierte, als ich actionItems übergebe, die eine ArrayList ist.

Jetzt bin ich ein Upgrade Apache Tomcat 7 von 7.0.52 bis 7.0.70, und der Code mit MethodNotFoundException gebrochen:

javax.el.MethodNotFoundException: java.lang.NoSuchMethodException: org.codehaus. jackson.map.ObjectMapper.writeValueAsString (java.util.ArrayList) bei javax.el.BeanELResolver.invoke (BeanELResolver.java:422) bei org.apache.jasper.el.JasperELResolver.invoke (JasperELResolver.java:139)

Es wird versucht, eine Methodezu findenmit dem Argumenttyp ArrayList. Es scheint mit this change in 7.0.53 verwandt zu sein. Wie sollte ich meinen Code ändern, damit er funktioniert? Muss ich den Methodenaufruf mit einem Object-Argument ausführen? Wenn ja, gibt es eine Möglichkeit, die ArrayList zu einem Objekt in EL zu werfen und dann den Methodenaufruf zu machen?

Antwort

0

Es stellt sich heraus, dass dies ein Problem auf unserer Seite ist. Diese parametrisierten Methodenaufrufe werden unterstützt.