#Jsp2Thymeleaf - an extensible JSP to Thmeleaf converter
This project is intended to automate over 95% of jsp to thymeleaf conversion
It features:
i) A great JSP parser thanks to the excellent jsp2jspx project which I uncovered on an archeological SourceForge dig and resurrected from Subversion.
ii) A converter framework allowing you to add converters for your own tag libraries in java, groovy or python.
iii) A configurable maven plugin to automate the conversion of pages either entirely or more sensibly, page by page or fragment by fragment. Used in conjunction with the com.cybernostics:spring-thymeleaf-jsp library (which allows jsp pages to work alongside thymeleaf, even including thymeleaf fragments), you can run and test your project at any stage in the conversion.
#Running it
i) From the command line: java -jar Jsp2Thymeleaf [src_files|*.jsp] [destpath|.] --taglibs=[pathlist] --urimap=[path]
where: destpath - is the path where the converted files will end up taglibs - a list of taglib converters, either *.groovy, or *.py. urimap - is a map of any custom uri's you use to select taglibs from your jsps
ii) From the maven plugin Include the com.cybernostics:maven-jsp2thymeleaf plugin:
<plugin>
<artifactId>maven-jsp2thymeleaf</artifactId>
<groupId>com.cybernostics</groupId>
<configuration>
<src></src>
<dest>${build.output.path}</dest>
<includes>
<include>MyPage.jsp</include>
</includes>
<excludes>
<exclude>MyOtherPage.jsp</exclude>
</excludes>
</configuration>
</plugin>
#JSP coverage
#JSTL coverage
| Done? | Tag |
|---|---|
| No | c:catch |
| No | c:choose |
| Yes | c:forEach |
| No | c:forTokens |
| Yes | c:if |
| No | c:import |
| No | c:otherwise |
| Yes | c:out |
| No | c:param |
| No | c:redirect |
| No | c:remove |
| No | c:set |
| No | c:url |
| No | c:when |
| No | fmt:bundle |
| No | fmt:formatDate |
| No | fmt:formatNumber |
| No | fmt:message |
| No | fmt:param |
| No | fmt:parseDate |
| No | fmt:parseNumber |
| No | fmt:requestEncoding |
| No | fmt:setBundle |
| No | fmt:setLocale |
| No | fmt:setTimeZone |
| No | fmt:timeZone |
| No | fn:contains() |
| No | fn:containsIgnoreCase() |
| No | fn:endsWith() |
| No | fn:escapeXml() |
| No | fn:indexOf() |
| No | fn:join() |
| No | fn:length() |
| No | fn:replace() |
| No | fn:split() |
| No | fn:startsWith() |
| No | fn:substring() |
| No | fn:substringAfter() |
| No | fn:substringBefore() |
| No | fn:toLowerCase() |
| No | fn:toUpperCase() |
| No | fn:trim() |
| No | sql:dateParam |
| No | sql:param |
| No | sql:query |
| No | sql:setDataSource |
| No | sql:transaction |
| No | sql:update |
| No | x:choose |
| No | x:forEach |
| No | x:if |
| No | x:otherwise |
| No | x:out |
| No | x:param |
| No | x:parse |
| No | x:set |
| No | x:transform |
| No | x:when |