SiteMesh'u bir kapsayıcım olarak Tomcat 5 kullanarak eski bir uygulamaya entegre etmeye çalışıyorum. Basit bir dekoratör ile dekorasyon yapıyorum bir main.jsp
var. El http://example.com/my-webapp/jsp/main.jsp
gidersenizSiteMesh'i RequestDispatcher'ı kullanarak kullanma()
<decorators defaultdir="/decorators">
<decorator name="layout-main" page="layout-main.jsp">
<pattern>/jsp/main.jsp</pattern>
</decorator>
</decorators>
Bu dekoratör çalışır: decorators.xml
yılında
, sadece tanımlanmış bir dekoratör var. Ancak, servlet, bunun yerine bir jsp bir yönlendirme yapmanın yapar birkaç yer vardır bir forward:
getServletContext().getRequestDispatcher("/jsp/main.jsp").forward(request, response);
Bu URL yerine jsp dosyası http://example.com/my-webapp/servlet/MyServlet
gibi bir şey olarak kalır ve bu nedenle olmadığı anlamına gelir dekore edilmek üzere, decorators.xml
modelindeki desen eşleşmediğinden dolayı farz ediyorum.
layout-main.jsp
tarafından dekore edilmesine gerek olmayan başka jsps'ler olduğu için <pattern>/*</pattern>
yapamıyorum. MyServlet
bazen main.jsp
bazen ve belki de error.jsp
diğer zamanlarda iletebileceğinden, <pattern>/servlet/MyServlet*</pattern>
yapamıyorum.
Servletlerin nasıl çalıştığı konusunda kapsamlı değişiklikler yapmadan bunun üzerinde çalışmanın bir yolu var mı? Eski bir uygulama olduğundan, işleri değiştirecek kadar özgürlüğüm yok, bu yüzden bunu düzeltecek bir yapılandırma umuyoruz.
SiteMesh'in belgeleri gerçekten bu kadar iyi değil. Çoğunlukla dağıtımla gelen örnek uygulamada çalışıyorum. SiteMesh'i çok beğendim ve bu davada çalışmamı umuyordum.
Bu, filtrenin iletilen talebe uygulanmasını sağladı ve böylece site haritası dekoratörünü iletilen jsp sayfasına uyguladı. Teşekkürler! –
Teşekkürler skaffman, bu sadece bana çok yardımcı oldu! –
Bu yeni direktifleri görmüştüm ama henüz onlara ihtiyaçları yoktu. Harika tavsiye. –