I'm now digging into XWork to see if I can add this functionality. I have the following in a JSP and I'd like to receive an error from it:
<s:property value="methodDoesntExist('foo')"/> OgnlValueStack lines 260-265: Object value = OgnlUtil.getValue(expr, context, root, asType); if (value != null) { return value; } else { return findInContext(expr); } In this example, the following method is called with "methodDoesntExist('foo')"" as the value for name: private Object findInContext(String name) { return getContext().get(name); } So if nothing is found in the map, null is returned (I'm assuming). It seems like the if/else statement might be better with the following: Object value = OgnlUtil.getValue(expr, context, root, asType); if (value != null) { return value; } else { value = findInContext(expr); if (value == null) { logLookupFailure(expr, ??); } } However, I don't know what to put in the ?? location. Thoughts on this? Thanks, Matt mraible wrote: > > Is it possible to use altSyntax to solve this problem? In other words, > require %{} around all expressions? Looking through the docs, it doesn't > seem like altSyntax is supported in Struts 2. > > https://issues.apache.org/struts/browse/WW-1819 > > Thanks, > > Matt > > > mraible wrote: >> >> >> mraible wrote: >>> >>> I have the following class: >>> >>> public class TestAction { >>> >>> public static String concat(String str1, String str2) { >>> return str1 + " and " + str2; >>> } >>> } >>> >>> In a JSP, I can write the following and it works fine: >>> >>> <s:property value="@[EMAIL PROTECTED]('1', '2')"/> >>> >>> However, if I change it to an invalid class name, it fails silently: >>> >>> <s:property value="@[EMAIL PROTECTED]('1', '2')"/> >>> >>> I've tried turning up the logging for org.apache.struts2, >>> com.opensymphony.xwork2 and ognl - but it still fails silently. Any >>> ideas how to get better error messages about invalid OGNL expressions? >>> >> >> I'll take that as a "no", it is not possible to get better error >> messages. That's too bad since it seems I get better type-safety and >> errors from scriptlets instead of OGNL. >> >> <%@ page >> import="org.foo.bar.baz.SettingsServlet,org.foo.bar.baz.enums.EnumCodec" >> %> >> >> <c:set >> var="q"><%=EnumCodec.URL.encode(SettingsServlet.ACTIONS.networkUpdates)%></c:set> >> >> <s:property value="url(@[EMAIL PROTECTED]).q('${q}')"/> >> >> VS: >> >> <s:property >> value="url(@[EMAIL PROTECTED]).q(@[EMAIL PROTECTED](@[EMAIL PROTECTED]))"/> >> >> The framework I'm looking to migrate to Struts 2 has the ability for it's >> EL to read from imported Statics - a pretty cool feature IMO. >> >> ${url(pageBean.MAPPING.SETTINGS_SERVLET).q(EnumCodec.URL.encode(SettingsServlet.ACTIONS.networkUpdates))} >> >> Matt >> >> > > -- View this message in context: http://www.nabble.com/How-can-I-tell-Struts-2-to-throw-log-exceptions-for-invalid-OGNL-Expressions-tf4100102.html#a12373437 Sent from the Struts - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]