Gap
Our frontend module currently covers Thymeleaf and JSP. It does not handle JSF or FreeMarker templates, which are common in enterprise Spring applications.
Proposal
Extend modules/frontend.md to detect and migrate:
- JSF → Qute (for small projects, < 5 view files) or JSF → Quarkus MyFaces (for larger projects)
- FreeMarker → Qute
Gate condition update
New: "Thymeleaf/JSP/FreeMarker templates in templates/ or static resources in static/, or JSF XHTML files in webapp/"
What to cover
FreeMarker → Qute:
.ftl / .ftlh files → .html Qute templates
${variable} syntax is similar, but FreeMarker directives (<#if>, <#list>) → Qute equivalents ({#if}, {#for})
FreeMarkerConfigurer bean → remove (Qute auto-configured)
JSF → Quarkus MyFaces (large projects):
- Add
quarkus-myfaces extension
- Migrate
javax.faces.* → jakarta.faces.*
@ManagedBean → @Named + @RequestScoped/@ViewScoped
- XHTML files move to
META-INF/resources/
faces-config.xml → CDI-based navigation
JSF → Qute (small projects):
- Rewrite XHTML to Qute templates
- Managed beans → CDI beans with
@Inject in Qute templates
Reference
Gap
Our frontend module currently covers Thymeleaf and JSP. It does not handle JSF or FreeMarker templates, which are common in enterprise Spring applications.
Proposal
Extend
modules/frontend.mdto detect and migrate:Gate condition update
New: "Thymeleaf/JSP/FreeMarker templates in
templates/or static resources instatic/, or JSF XHTML files inwebapp/"What to cover
FreeMarker → Qute:
.ftl/.ftlhfiles →.htmlQute templates${variable}syntax is similar, but FreeMarker directives (<#if>,<#list>) → Qute equivalents ({#if},{#for})FreeMarkerConfigurerbean → remove (Qute auto-configured)JSF → Quarkus MyFaces (large projects):
quarkus-myfacesextensionjavax.faces.*→jakarta.faces.*@ManagedBean→@Named+@RequestScoped/@ViewScopedMETA-INF/resources/faces-config.xml→ CDI-based navigationJSF → Qute (small projects):
@Injectin Qute templatesReference
agents/frontend/jsf-quarkus-myfaces.md,agents/frontend/jsf-qute.md,agents/frontend/freemarker-qute.md