EL中参数化方法调用的参数类型
Argument type of parameterized method call in EL
我像这样在 EL 中进行方法调用 objectMapper.writeValueAsString
。
<%@ 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
在 method signature 中接受一个 Object 参数。当我传入 actionItems
时它正在工作,这是一个 ArrayList
。
现在我正在将我的 ApacheTomcat 7 从 7.0.52 升级到 7.0.70,代码被破坏 MethodNotFoundException
:
javax.el.MethodNotFoundException: java.lang.NoSuchMethodException: org.codehaus.jackson.map.ObjectMapper.writeValueAsString(java.util.ArrayList)
at javax.el.BeanELResolver.invoke(BeanELResolver.java:422)
at org.apache.jasper.el.JasperELResolver.invoke(JasperELResolver.java:139)
它正在尝试查找参数类型为 ArrayList
的方法 writeValueAsString
。它似乎与 7.0.53 中的 this change 有关。我应该如何更改我的代码以使其工作?我是否必须使用 Object 参数进行方法调用?如果是这样,有没有办法可以将 ArrayList
转换为 EL 中的对象,然后进行方法调用?
原来这是我们这边的问题。支持这些参数化方法调用。
我像这样在 EL 中进行方法调用 objectMapper.writeValueAsString
。
<%@ 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
在 method signature 中接受一个 Object 参数。当我传入 actionItems
时它正在工作,这是一个 ArrayList
。
现在我正在将我的 ApacheTomcat 7 从 7.0.52 升级到 7.0.70,代码被破坏 MethodNotFoundException
:
javax.el.MethodNotFoundException: java.lang.NoSuchMethodException: org.codehaus.jackson.map.ObjectMapper.writeValueAsString(java.util.ArrayList) at javax.el.BeanELResolver.invoke(BeanELResolver.java:422) at org.apache.jasper.el.JasperELResolver.invoke(JasperELResolver.java:139)
它正在尝试查找参数类型为 ArrayList
的方法 writeValueAsString
。它似乎与 7.0.53 中的 this change 有关。我应该如何更改我的代码以使其工作?我是否必须使用 Object 参数进行方法调用?如果是这样,有没有办法可以将 ArrayList
转换为 EL 中的对象,然后进行方法调用?
原来这是我们这边的问题。支持这些参数化方法调用。