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

Static files like css and js files in struts-core not properly served

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.5.18
    • 2.5.20, 6.0.0
    • Core
    • None

    Description

      While preparing a small demo of struts2 for my students I was annoyed that error messages were not shown in red.

      While investigating why, I noticed a lot of errors like this in the console:

      GRAVE: "Servlet.service()" pour la servlet [default] a généré une exception
      java.lang.NullPointerException
      at org.apache.struts2.dispatcher.DefaultStaticContentLoader.findStaticResource(DefaultStaticContentLoader.java:199)
      at org.apache.struts2.dispatcher.ExecuteOperations.executeStaticResourceRequest(ExecuteOperations.java:59)
      at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:128)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
      at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
      at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
      at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
      at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:770)
      at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
      at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
      at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
      at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
      at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
      at java.base/java.lang.Thread.run(Thread.java:844)
      
      

       

      While looking at the HTML source of the page and web inspector of my browser, I also noted that three ressources were not found in that page:

       

      /struts/utils.js  
      /struts/css_xhtml/styles.css
      /struts/css_xhtml/validation.js
      

       

       

      AFAIK, those resources should be served by default from struts-core jar file because 

      <constant name="struts.serve.static" value="true" />

      by default.

      I could check that setting that constant to false prevents the NPE to occur.

      I was able to find the three files in struts-core jar file.

      I could check that copying those files in my webapp with the constant to false fixed my css issue regarding error messages.

      So the NPE is related IMHO to  DefaultStaticContentLoader not being able to locate correctly the resources in the jar. I do not know why.

      Attachments

        Issue Links

          Activity

            People

              yasserzamani Yasser Zamani
              dleberre Daniel Le Berre
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: