Uploaded image for project: 'Struts 2'
  1. Struts 2
  2. WW-5125

forbidden name attribute values (size, clone...?) in <s:textfield> using the default theme

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 2.5.26
    • 2.5.27, 6.0.0
    • None
    • None

    Description

      Hi,

      It is easy to reproduce running an (empty) action resulting a simple JSP page like this:

      <%@ taglib prefix="s" uri="/struts-tags"%>
      <!DOCTYPE html>
      <html lang="en">
      <head>
      </head>
      <body>
      <h1>Struts bug2</h1>
      <s:textfield theme="simple" name="clone" />
      <s:textfield name="clone" />
      </body>
      

      The first textfield is rendered but the second throws an exception like:

      SEVERE: Error executing FreeMarker template
      FreeMarker template error:
      Getting the number of items or listing the items is not supported on this method+sequence (wrapper: f.e.b.SimpleMethodModel) value, because this value wraps the following Java method, not a real listable value: public java.lang.Object java.util.HashMap.clone()----
      Tip: Maybe you should to call this method first and then do something with its return value.
      ----
      Tip: obj.someMethod(i) and obj.someMethod[i] does the same for this method, hence it's a "+sequence".
      --------
      FTL stack trace ("~" means nesting-related):
      	- Failed at: #list fieldErrors[parameters.name] as...  [in template "template/~~~xhtml/controlheader-core.ftl" at line 28, column 1]
      	- Reached through: #include "/${parameters.templateDir}/...  [in template "template/~~~xhtml/controlheader.ftl" at line 21, column 1]
      	- Reached through: #include "/${parameters.templateDir}/...  [in template "template/xhtml/text.ftl" at line 21, column 1]
      ----Java stack trace (for programmers):
      ----
      freemarker.core._TemplateModelException: [... Exception message was already printed; see it above ...]
      	at freemarker.ext.beans.SimpleMethodModel.size(SimpleMethodModel.java:95)
      	at freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing(IteratorBlock.java:312)
      	at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:271)
      	at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:244)
      	at freemarker.core.Environment.visitIteratorBlock(Environment.java:644)
      	at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:108)
      	at freemarker.core.IteratorBlock.accept(IteratorBlock.java:94)
      	at freemarker.core.Environment.visit(Environment.java:334)
      	at freemarker.core.Environment.visit(Environment.java:340)
      	at freemarker.core.Environment.visit(Environment.java:340)
      	at freemarker.core.Environment.visit(Environment.java:340)
      	at freemarker.core.Environment.include(Environment.java:2925)
      	at freemarker.core.Include.accept(Include.java:171)
      	at freemarker.core.Environment.visit(Environment.java:334)
      	at freemarker.core.Environment.visit(Environment.java:340)
      	at freemarker.core.Environment.include(Environment.java:2925)
      	at freemarker.core.Include.accept(Include.java:171)
      	at freemarker.core.Environment.visit(Environment.java:334)
      	at freemarker.core.Environment.visit(Environment.java:340)
      	at freemarker.core.Environment.process(Environment.java:313)
      	at freemarker.template.Template.process(Template.java:383)
      	at org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:149)
      	at org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:580)
      	at org.apache.struts2.components.UIBean.end(UIBean.java:536)
      	at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:39)
      	at org.apache.jsp.WEB_002dINF.bug2_jsp._jspx_meth_s_005ftextfield_005f1(bug2_jsp.java:201)
      	at org.apache.jsp.WEB_002dINF.bug2_jsp._jspService(bug2_jsp.java:139)
      	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
      	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:467)
      	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:378)
      	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:326)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
      	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
      	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:710)
      	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:457)
      	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:384)
      	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
      	at org.apache.struts2.result.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:169)
      	at org.apache.struts2.result.StrutsResultSupport.execute(StrutsResultSupport.java:206)
      	at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:375)
      	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:279)
      	at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:250)
      	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
      	at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:179)
      	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
      	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
      	at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
      	at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:49)
      	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
      	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
      	at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.doIntercept(ConversionErrorInterceptor.java:142)
      	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
      	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
      	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:140)
      	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
      	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
      	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:140)
      	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
      	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
      	at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:201)
      	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
      	at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:67)
      	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
      	at org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept(DateTextFieldInterceptor.java:133)
      	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
      	at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:89)
      	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
      	at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
      	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
      	at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:101)
      	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
      	at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:142)
      	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
      	at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:160)
      	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
      	at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:175)
      	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
      	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
      	at org.apache.struts2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:121)
      	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
      	at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:167)
      	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
      	at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:207)
      	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
      	at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:196)
      	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
      	at org.apache.struts2.factory.StrutsActionProxy.execute(StrutsActionProxy.java:48)
      	at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:574)
      	at org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:79)
      	at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:141)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
      	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
      	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
      	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
      	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
      	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
      	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
      	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
      	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)
      	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
      	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
      	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)
      	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)
      	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
      	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
      	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
      	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
      	at java.base/java.lang.Thread.run(Thread.java:832)
      

      Attachments

        Activity

          People

            yasserzamani Yasser Zamani
            pduroux Patrice DUROUX
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0h
                0h
                Logged:
                Time Spent - 1h 40m
                1h 40m