Melloware created MYFACES-4668:
----------------------------------

             Summary: 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.1.0-RC1, 4.0.2, 5.0.0
            Reporter: Melloware


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)

Reply via email to