Formulários JSF+Richfaces dinâmicos

O Problema:

Eu preciso criar formulários JSF dinamicamente. Basicamente, eu não posso criar um formulário em meu .jsp/.xhtml, seja lá qual for o idioma, desta forma abaixo porque o layout dos meu formulários são definidos/parametrizados em banco de dados (longa história):

<f:view> <h:form> UserID: <h:inputText value="#{mgr.userID}"/> <br/>Password: <h:inputText value="#{mgr.password}"/> <br/><h:commandButton value="Login" action="#{mgr.loginAction}"/> </h:form> </f:view>

Quando eu digo que o layout dos meus forms vem do banco de dados, me refiro a regra de negócio que indicará, entre outras, por exemplo, que um campo “input” tem tamanho X, é posicionado no local X, etc. Então eu terei um “motor/builder” que irá processar tais regras e, consequentemente, mostrar/apresentar/renderizar isso num browser (resumidasso).

A Solução:

NÃO SEI AINDA porque não sei como criar formulários usando JSF/Richfaces/Facelets dinamicamente.

Eu não uso puro-e-simplesmente um servlet porque o core do MVC de minha app o é JSF e, portanto, não gostaria de perder suas validações, conversões, entre outros recursos.

Sei que é bem possível manipular a UIComponent base do JSF, mas como não sou tão hard-user do JSF tenho alguns medos, anseios, etc.

Pois é amigos, eu sinto cheiro de “gamba” a vista. Mas antes recorro a vós para uma última opinião.

Um forte abraço,

Daniel

Já fiz isso, você vai ter que criar eles em seu managed-beans e fazer um biding para o xhtml, tome coidado com o escopo do seu managed pois se for session os componentes podem ficar na memória para manter um estado de conversação com cliente e ocupar espaço desnecessário.

Oi Flávio,

Tu tens por um acaso algum exemplo mínimo para que me orientar em não só como fazer mas também em quais recursos do JSF terei de me atentar? Seria de grande ajuda um exemplo mesmo que seja dummy like!

Um forte abraço,

Daniel

Vou te passar em partes senão vc vai pirar. rsrs

Aqui é onde o formulário vai aparecer.


&lt;h:outputLabel binding="#{**** seu managed bean ******.outputPanel}" id="panel"&gt;
                    &lt;/h:outputLabel&gt;

Aqui é o código do managed bean que faz o binding.


private HtmlOutputLabel outputPanel;

// getters and setters.

Nesse exemplo então você imagina ser renderizado algo como um label via outputLabel?

Tu tem um livro ou documentação que possa me guiar mais avançadamente no assunto?

Vai adicionando os componentes no panel. obs: não esqueca de da um rerender no panel na view, existem componentes como o panel grid que pode criar tabelas para você organizar o seu formulário



HtmlInputText inputText = new HtmlInputText();
inputText.setSize(campos.getTamanhoCampo() + 3);
inputText.setId("totalsat" + count);
inputText.setMaxlength(campos.getTamanhoCampo());
inputText.setValue(campos.getMensagem());

outputPanel.getChildren().add(inputText );

Poxa Flavio, quando agora sim entendi quando disseram que o JSF visava trazer ao desenvolvimento web conceitos semelhantes aos víamos no Swing e AWT. Isso é muito parecido com Swing, por exemplo. Ficou bastante claro já, mas acredito que meus formulários serão muito mais complexos do que estes e vou precisar de uma documentação, etc.

Você teria alguma sugestão de leitura?

Um forte abraço,

Daniel