[
https://issues.apache.org/jira/browse/MYFACES-4668?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Melloware resolved MYFACES-4668.
--------------------------------
Fix Version/s: (was: 4.0.3)
(was: 4.1.0-RC3)
Resolution: Fixed
> Quarkus: Programmatic Views not working
> ---------------------------------------
>
> Key: MYFACES-4668
> URL: https://issues.apache.org/jira/browse/MYFACES-4668
> Project: MyFaces Core
> Issue Type: Bug
> Components: Extension Feature
> Affects Versions: 4.0.2, 4.1.0-RC1, 5.0.0
> Reporter: Melloware
> Assignee: Melloware
> Priority: Major
>
> Original report: [https://github.com/melloware/quarkus-faces/issues/444]
>
> I tried to add a programmatic view with the `@View` annotation, but when I
> access http://localhost:8080/facelet.xhml it returns 404
>
> {code:java}
> @View("/facelet.xhtml")
> @ApplicationScoped
> public class FaceletView extends Facelet {
> @Override
> public void apply(FacesContext facesContext, UIComponent parent) {
> if
> (!facesContext.getAttributes().containsKey(IS_BUILDING_INITIAL_STATE)) {
> return;
> }
> var components = new ComponentBuilder(facesContext);
> var rootChildren = parent.getChildren();
> var doctype = new UIOutput();
> doctype.setValue("<!DOCTYPE html>");
> rootChildren.add(doctype);
> var htmlTag = new UIOutput();
> htmlTag.setValue("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
> rootChildren.add(htmlTag);
> HtmlBody body = components.create(HtmlBody.COMPONENT_TYPE);
> rootChildren.add(body);
> HtmlForm form = components.create(HtmlForm.COMPONENT_TYPE);
> form.setId("form");
> body.getChildren().add(form);
> HtmlOutputText message =
> components.create(HtmlOutputText.COMPONENT_TYPE);
> message.setId("message");
> HtmlCommandButton actionButton =
> components.create(HtmlCommandButton.COMPONENT_TYPE);
> actionButton.setId("button");
> actionButton.addActionListener(
> e -> message.setValue("Hello, World! Welcome to Faces 4.0 on
> Jakarta EE 10"));
> actionButton.setValue("Greet");
> form.getChildren().add(actionButton);
> parent.getChildren().add(message);
> htmlTag = new UIOutput();
> htmlTag.setValue("</html>");
> rootChildren.add(htmlTag);
> }
> private static class ComponentBuilder {
> FacesContext facesContext;
> ComponentBuilder(FacesContext facesContext) {
> this.facesContext = facesContext;
> }
> @SuppressWarnings("unchecked")
> <T> T create(String componentType) {
> return (T)
> facesContext.getApplication().createComponent(facesContext, componentType,
> null);
> }
> }
> }
>
> {code}
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)