Sitemesh 3 (sürüm 3.0-alfa-2) ile birlikte Struts 2 (sürüm 2.3.14.3) kullanıyorum ve cerain koşulları altında bir NullPointerException alıyorum. Burada, ŞimdiStruts 2 + Sitemesh 3 tümleştirmesi - NPE in FreemarkerDecoratorServlet
<filter-mapping>
<filter-name>struts-prepare</filter-name>
<url-pattern>*.do</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>*.do</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>struts-execute</filter-name>
<url-pattern>*.do</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
<servlet>
<servlet-name>sitemesh-freemarker</servlet-name>
<servlet-class>org.apache.struts2.sitemesh.FreemarkerDecoratorServlet</servlet-class>
<init-param>
<param-name>default_encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
konu açıklaması:
Öncelikle burada web.xml''deki benim Struts2/sitemesh yapılandırma dikmeler dev.mode etkindir
Eğer ben bir erişmeyi deneyin var olmayan eylem, ConfigurationException bir struts atılır.
Struts memuru standart Struts hata şablonunu (/org/apache/struts2/dispatcher/error.ftl) yazıyor org.apache.struts2.dispatcher.Dispatcher.sendError(), çağırarak istisna yerine getirmeye çalışır tepki.
Artık işler yanlış gitmeye başladığında ortaya çıkıyor. Özgün istek, site hatası filtresiyle dekore edildiğinden, yapılandırma hatası oluştuktan sonra bile, sitemesh, bir istisnayla sonuçlanan bir dekoratör uygulamayı dener; çünkü Struts eylem içeriği, yapılandırma istisnası nedeniyle düzgün şekilde ayarlanmadığından ve alıyorum şu: Burada
java.lang.NullPointerException
org.apache.struts2.sitemesh.FreemarkerDecoratorServlet.process(FreemarkerDecoratorServlet.java:176)
FreemarkerDecoratorServlet.java uygun koddur - ctx değişken null:
ActionContext ctx = ServletActionContext.getActionContext(request);
model = freemarkerManager.buildTemplateModel(ctx.getValueStack(), ctx.getActionInvocation().getAction(), servletContext, request, response, wrapper);
ben sitemesh içinde tepkisini süslemek için denemek gerektiğini düşünüyorum eylemi çağırırken bir hata oluştu, ancak Struts2/Sitemesh entegrasyonunu değiştirmeden bunu nasıl yapacağımı bilmiyorum.
NPE'den nasıl sakınılırsınız?
sayesinde
Tüm 'web.xml' dosyasını göster. –
burada: http://www.filedropper.com/web_1 –
Neden "struts-execute" filtre url-pattern'iniz?/Struts/* '? –