Я пытаюсь Ajax с Struts2 и Dojo делает что-то очень простое:
в jsp:
...
<sx:head/>
...
<sx:div href="/myUrl.action">Loading ...</sx:div>
...
Я отлично работаю, получаю URL и так далее. НО, когда я перезагружаю контекст, изменяя jsp (у меня есть контекст с флагом reloadable = "true"), он больше не работает.
Причина в том, что следующий URL больше не доступен:
http://myserver.com/myContext/struts/dojo/struts_dojo.js
приводит к следующему исключению:
java.lang.NullPointerException
org.apache.struts2.dispatcher.DefaultStaticContentLoader.findStaticResource(DefaultStaticContentLoader.java:162)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeStaticResourceRequest(ExecuteOperations.java:62)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:86)
com.cellectis.servlet.common.SessionRecorder.doFilter(SessionRecorder.java:68)
(он был доступен, когда работал).
Я пробовал в struts2-jquery, и у меня была точно такая же проблема доступности javascript.
Мой экстракт web.xml:
...
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/st2fr/*</url-pattern>
<url-pattern>/struts/*</url-pattern>
</filter-mapping>
...
У меня нет простого URL-шаблона / *, потому что в этом же контексте есть несколько неструктурных сервлетов. / st2fr - это пространство имен, в котором находится мое приложение Struts, а / struts / * должно иметь доступ к JavaScript додзё.
Я использую Struts-2.3.1 на Tomcat-6.0.13
Кто-нибудь знает, почему это странное поведение или что делать?
Спасибо за внимание.
Aymeric