You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Bruce Phillips (JIRA)" <ji...@apache.org> on 2013/07/30 13:33:50 UTC

[jira] [Commented] (WW-4153) Struts2 s:select broken if multiple attribute is used and name attribute is not specified

    [ https://issues.apache.org/jira/browse/WW-4153?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13723745#comment-13723745 ] 

Bruce Phillips commented on WW-4153:
------------------------------------

Nick thank you for the additional information.  I was able to verify that if the select tag is used with multiple attribute set and no name attribute is used then an Exception will be generated.  I've attached a zipped Maven project that can be used to demonstrate the exception.  In register.jsp remove the name attribute, rebuild the .war file and deploy it to your Servlet container.  Go to URL http://localhost:8080/form_processing/register.jsp and you will get the following Exception in the logs:

2013-07-30 06:26:49,385 ERROR freemarker.runtime.error:96 - Template processing error: "Expression parameters.id is undefined on line 122, column 42 in template/simple/select.ftl."
Expression parameters.id is undefined on line 122, column 42 in template/simple/select.ftl.
The problematic instruction:
----------
==> ${parameters.id?html} [on line 122, column 40 in template/simple/select.ftl]
 in include "/${parameters.templateDir}/simple/select.ftl" [on line 24, column 1 in template/xhtml/select.ftl]
----------

Java backtrace for programmers:
----------
freemarker.core.InvalidReferenceException: Expression parameters.id is undefined on line 122, column 42 in template/simple/select.ftl.
	at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:125)
	at freemarker.core.Expression.getStringValue(Expression.java:118)
	at freemarker.core.Expression.getStringValue(Expression.java:93)
	at freemarker.core.StringBuiltins$StringBuiltIn._getAsTemplateModel(StringBuiltins.java:71)
	at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
	at freemarker.core.Expression.getStringValue(Expression.java:93)
	at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.MixedContent.accept(MixedContent.java:92)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.MixedContent.accept(MixedContent.java:92)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.Environment.include(Environment.java:1508)
	at freemarker.core.Include.accept(Include.java:169)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.MixedContent.accept(MixedContent.java:92)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.Environment.process(Environment.java:199)
	at freemarker.template.Template.process(Template.java:259)
	at org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:157)
	at org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:572)
	at org.apache.struts2.components.UIBean.end(UIBean.java:526)
	at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42)
	at org.apache.jsp.register_jsp._jspx_meth_s_005fselect_005f0(register_jsp.java:267)
	at org.apache.jsp.register_jsp._jspx_meth_s_005fform_005f0(register_jsp.java:143)
	at org.apache.jsp.register_jsp._jspService(register_jsp.java:87)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:304)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
                
> Struts2 s:select broken if multiple attribute is used and name attribute is not specified
> -----------------------------------------------------------------------------------------
>
>                 Key: WW-4153
>                 URL: https://issues.apache.org/jira/browse/WW-4153
>             Project: Struts 2
>          Issue Type: Bug
>    Affects Versions: 2.3.15.1
>         Environment: JBoss AS7+ Spring on Ubuntu
>            Reporter: nick
>            Assignee: Bruce Phillips
>             Fix For: 2.3.16
>
>
> I'm facing a problem when i don't specify *name* attribute in struts *select* tag, where the same tag was working fine in earlier release (2.3.4 *) . My select tag is as follows
> {code:html}
> <s:select headerKey="" headerValue="%{getText('sel.dept')}" id="departments"  list="dropdownData.departments"
> listValue="deptName" listKey="id"  theme="simple" tabindex="1"  multiple="true" size="5" cssStyle="min-width:130px"/>
> {code}
> The exception is as follows and it got disappeared when i add *name* attribute
> {noformat}
> ERROR [freemarker.runtime] (http-localhost/127.0.0.1:8080-3) Template processing error: "Expression parameters.name is undefined on line 122, column 85 in template/simple/select.ftl.": freemarker.core.InvalidReferenceException: Expression parameters.name is undefined on line 122, column 85 in template/simple/select.ftl.
> 	at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:125) [freemarker-2.3.19.jar:2.3.19]
> 	at freemarker.core.Expression.getStringValue(Expression.java:118) [freemarker-2.3.19.jar:2.3.19]
> 	at freemarker.core.Expression.getStringValue(Expression.java:93) [freemarker-2.3.19.jar:2.3.19]
> 	at freemarker.core.StringBuiltins$StringBuiltIn._getAsTemplateModel(StringBuiltins.java:71) [freemarker-2.3.19.jar:2.3.19]
> 	at freemarker.core.Expression.getAsTemplateModel(Expression.java:89) [freemarker-2.3.19.jar:2.3.19]
> 	at freemarker.core.Expression.getStringValue(Expression.java:93) [freemarker-2.3.19.jar:2.3.19]
> 	at freemarker.core.DollarVariable.accept(DollarVariable.java:76) [freemarker-2.3.19.jar:2.3.19]
> 	at freemarker.core.Environment.visit(Environment.java:221) [freemarker-2.3.19.jar:2.3.19]
> 	at freemarker.core.MixedContent.accept(MixedContent.java:92) [freemarker-2.3.19.jar:2.3.19]
> 	at freemarker.core.Environment.visit(Environment.java:221) [freemarker-2.3.19.jar:2.3.19]
> 	at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79) [freemarker-2.3.19.jar:2.3.19]
> 	at freemarker.core.Environment.visit(Environment.java:221) [freemarker-2.3.19.jar:2.3.19]
> 	at freemarker.core.MixedContent.accept(MixedContent.java:92) [freemarker-2.3.19.jar:2.3.19]
> 	at freemarker.core.Environment.visit(Environment.java:221) [freemarker-2.3.19.jar:2.3.19]
> 	at freemarker.core.Environment.process(Environment.java:199) [freemarker-2.3.19.jar:2.3.19]
> 	at freemarker.template.Template.process(Template.java:259) [freemarker-2.3.19.jar:2.3.19]
> 	at org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:157) [struts2-core-2.3.15.jar:2.3.15]
> 	at org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:572) [struts2-core-2.3.15.jar:2.3.15]
> 	at org.apache.struts2.components.UIBean.end(UIBean.java:526) [struts2-core-2.3.15.jar:2.3.15]
> 	at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42) [struts2-core-2.3.15.jar:2.3.15]
> 	at org.apache.jsp.WEB_002dINF.jsp.dms.notificationGroup_jsp._jspx_meth_s_005fselect_005f0(notificationGroup_jsp.java:1171)
> 	at org.apache.jsp.WEB_002dINF.jsp.dms.notificationGroup_jsp._jspx_meth_s_005fpush_005f0(notificationGroup_jsp.java:438)
> 	at org.apache.jsp.WEB_002dINF.jsp.dms.notificationGroup_jsp._jspx_meth_s_005fform_005f0(notificationGroup_jsp.java:294)
> 	at org.apache.jsp.WEB_002dINF.jsp.dms.notificationGroup_jsp._jspService(notificationGroup_jsp.java:157)
> 	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:69) [jbossweb-7.2
> {noformat}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira