Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.3.28, 2.3.29, 2.3.30
-
None
-
None
Description
Hello,
I'm currently trying to upgrade Struts from V2.3.20 to V2.3.30.
Starting from V2.3.28, I'm having a yellow FreeMarker stack at the end of some pages. These pages have a <s:form> tag without "action" attribute.
Here is some part of the displayed error :
Java method "org.apache.struts2.components.Form.getValidators(String)" threw an exception when invoked on org.apache.struts2.components.Form object "org.apache.struts2.components.Form@3d354929"; see cause exception in the Java stack trace. FTL stack trace ("~" means nesting-related): - Failed at: #list tag.getValidators("\$\{tagName\}"... [in template "template/~~~css_xhtml/form-close-validate.ftl" at line 66, column 9] - Reached through: #include "/\$\{parameters.templateDir\}... [in template "template/xhtml/form-close.ftl" at line 25, column 1] ... Caused by: java.lang.NullPointerException at org.apache.struts2.util.ComponentUtils.containsExpression(ComponentUtils.java:51) at org.apache.struts2.components.Component.findValue(Component.java:376) at org.apache.struts2.components.Component.findString(Component.java:226) at org.apache.struts2.components.Form.getValidators(Form.java:276)
Here are the results of my research :
- When the method org.apache.struts2.components.Form.getValidators(String name) is called at the end of the page display, the "action" var is null.
- findString(action) is called, leading to org.apache.struts2.components.Component.findValue(String expr, Class toType) with expr=null
- Starting from V2.3.28, a new condition has been added to this method : if (ComponentUtils.containsExpression(expr)). This raises the NPE.
Is this a bug, or am I doing something wrong ?
Thanks in advance,
Yan