when migrating to extensionless I had an issue in production where I was getting an exception
2024-04-01 14:04:46,373 SEVERE [jakarta.enterprise.resource.webcontainer.faces.application] (default task-347) Error Rendering View[/s/home.xhtml]: com.sun.faces.application.view.ViewHandlingStrategyNotFoundException
at java.base/java.util.Optional.orElseThrow(Optional.java:403)
at jakarta.faces.impl@4.0.5//com.sun.faces.application.view.ViewHandlingStrategyManager.getStrategy(ViewHandlingStrategyManager.java:57)
at jakarta.faces.impl@4.0.5//com.sun.faces.application.view.ViewDeclarationLanguageFactoryImpl.getViewDeclarationLanguage(ViewDeclarationLanguageFactoryImpl.java:45)
at jakarta.faces.impl@4.0.5//com.sun.faces.application.view.MultiViewHandler.getViewDeclarationLanguage(MultiViewHandler.java:408)
at jakarta.faces.impl@4.0.5//com.sun.faces.application.view.MultiViewHandler.derivePhysicalViewId(MultiViewHandler.java:461)
at jakarta.faces.impl@4.0.5//com.sun.faces.application.view.MultiViewHandler.deriveViewId(MultiViewHandler.java:423)
at deployment.ROOT.war//org.ocpsoft.rewrite.faces.RewriteViewHandler.deriveViewId(RewriteViewHandler.java:155)
at jakarta.faces.impl@4.0.5//jakarta.faces.application.ViewHandlerWrapper.deriveViewId(ViewHandlerWrapper.java:172)
at jakarta.faces.impl@4.0.5//jakarta.faces.application.ViewHandlerWrapper.deriveViewId(ViewHandlerWrapper.java:172)
at jakarta.faces.impl@4.0.5//com.sun.faces.application.NavigationHandlerImpl.findImplicitMatch(NavigationHandlerImpl.java:945)
This ended up being because I had an h:link with an outcome which had a trailing slash.
<h:link outcome="/s/profile/two-step.xhtml/">Click here to get started</h:link>
This worked previously before enabling extensionless. This would have been much easier to track down if the viewId in question had been printed in the exception message.
This PR adds a useful message to the exception and fixes a doc typo in the same class
when migrating to extensionless I had an issue in production where I was getting an exception
This ended up being because I had an
h:link
with an outcome which had a trailing slash.This worked previously before enabling extensionless. This would have been much easier to track down if the viewId in question had been printed in the exception message.
This PR adds a useful message to the exception and fixes a doc typo in the same class