używałem JSP + JSTL ale jestem nudny C: jeśli c: wybierz ...Korzystanie zarówno Thymeleaf i JSP
Tak, chcę moje strony JSP mają być świadczone zarówno JSP i Thymeleaf (Mam zamiar usunąć wszystkie JSTL tak szybko, jak to możliwe). Używam Wiosna MVC ramowa:
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/" />
<property name="suffix" value=".jsp" />
<property name="order" value="1" />
</bean>
<!-- Thymeleaf -->
<bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
<property name="prefix" value="/WEB-INF/pages/" />
<property name="suffix" value=".html" />
<property name="templateMode" value="HTML5" />
</bean>
<bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine">
<property name="templateResolver" ref="templateResolver" />
</bean>
<bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
<property name="templateEngine" ref="templateEngine" />
<property name="order" value="2" />
</bean>
W moim kontrolera, po prostu zwrócić JSP bez extenion.
return "folder/page";
Czy moje strony JSP należy najpierw z rezolwerem JSP, a następnie renderd z rezolwerem Thymeleaf? Jeśli tak, w jaki sposób?
Wydaje się, że łańcuchy JSP i Thymeleaf są bardzo skomplikowane. Tak więc chcę użyć wewnętrznego przelicznika dla plików JSP i programu Thymeleaf do rozpoznawania szablonów dla plików HTML. Jak mogę to zrobić?
kilka myśli na temat swojego pomysłu: możesz podać własne ViewResolver które instrumenty 'ServletContextTemplateResolver' i 'InternalResourceViewResolver', ale przetwarzałoby oba jednocześnie, co może prowadzić do ciężkiego scenariusza WTF. Tak samo jak komentarz, ponieważ nie widzę żadnego rozwiązania, które umożliwiłoby przetworzenie obu procesów w łańcuchu. – meistermeier
Rozumiem, w jaki sposób mogę użyć strony JSP dla plików * .jsp i Thymeleaf dla plików * .html? Czy muszę zmieniać pasz w moim kontrolerze? – Athanor
Jeśli rozumiem, że masz rację, teraz "chcesz" dokonać przełączenia na podstawie zwróconego widoku? Więc nie ma obsługi widoku hybrydowego. Możesz spróbować, zmieniając sufiks nazwy pliku Thymeleaf ViewResolver na html. To może spaść przez InternalViewResolver bez żadnego wyjątku i wyzwolić templateResolver. Zmieniasz nazwy swoich nowych szablonów na * .html. Nie mam tu kodu ani bibliotek, aby przetestować ten pomysł. – meistermeier