[ 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)