Bom dia galera, gostaria de algumas idéias… Estamos com um projeto com o qual estamos criando um sistema, que precisa ser possível criar campos dinamicamente, sem ter entrar no código, ou seja, que os proprios profissionais do suporte possam criar e editar esses campos, e persistir campos dinamicamente também. Ainda estamos na fase de requisitos, e por isso venho a vcs perguntar qual seria a melhor tecnologia para ser usada nesse projeto?
Criação de campos dinamicos - Qual framework usar?
11 Respostas
Com JSF já consegui fazer isto, deu muito trabalho…
Outro destaque é o Django, pois apartir de um “model” (aonde você pode fazer uma interface para o usuário cadastrar os campos deste model) ele criar a parte do sistema baseado no mesmo, desta forma você não precisar colocar nem uma linha de código para ter a parte “administrativa” do modelo criado.
Amigo tenho uma pessima noticia para voce não existe nada parecido até onde eu conheço e olha que eu pesquisei muito.
Na minha empresa estamos desenvolvendo um framework para este problema e ja lhe adianto o trabalho é grande.
Caso encontre algo poste aqui.
Pensamos em algo aqui usando JSF + Spring ou só Spring, será que é possível?
Então eu fiz uma aplicação com JSF que lia uma tabela via JPA e apartir dos campos da tabela ele criava dinamicamente a tela, porem uma tela básica sem recursos como ajax etc…
Pensei em algo do tipo, porém meu chefe quer que possa ser incluido novo campo, alterado os que existem, propriedades do tipo tamanho e tals. Tenho sérias duvidas quanto a viabilidade desse projeto, devido a complexidade…
Enquanto incluir campos é a parte mais facil,só vc criar uma classe Tela que tem um List ou seja é uma aplicação CRUD normal…
a dificuldade está em montar esta Tela dinamicamente ,
Eh… A questao o problema é apresentar em tela, e persistir no banco isso, um campo genérico e tals…
Quando eu fiz minha aplicação era ± assim , eu lia os campos da tabela (Classe) e ia criando conforme a necessidade, o complicado neste modelo a criar interfaces RICAS…
private void criarComponentes() {
this.setPainel(new HtmlPanelGrid());
this.getPainel().setColumns(2);
HtmlOutputText hotTitulo = (HtmlOutputText) FacesContext.getCurrentInstance().getApplication().createComponent(HtmlOutputText.COMPONENT_TYPE);
hotTitulo.setValue("Configuração do Relatório de Pessoas");
Integer posicao = 0;
// Aqui eu pego todos os campos da Classe(Tabela) pessoa e crio os campos na tela com eles
for (Field field : this.getClassePessoa().getDeclaredFields()) {
HtmlSelectOneMenu somOperadores = (HtmlSelectOneMenu) FacesContext.getCurrentInstance().getApplication().createComponent(HtmlSelectOneMenu.COMPONENT_TYPE);
UISelectItems sim = (UISelectItems) FacesContext.getCurrentInstance().getApplication().createComponent(UISelectItems.COMPONENT_TYPE);
this.getOperadoresSelecionados().add(new String());
somOperadores.setValue(this.getOperadoresSelecionados().get(posicao));
sim.setValue(this.getOperadores());
somOperadores.getChildren().add(sim);
HtmlInputText itxOperador = (HtmlInputText)FacesContext.getCurrentInstance().getApplication().createComponent(HtmlInputText.COMPONENT_TYPE);
this.getValoresFiltro().add(new String());
itxOperador.setValue(this.getValoresFiltro().get(posicao));
this.getPainel().getChildren().add(somOperadores);
this.getPainel().getChildren().add(itxOperador);
posicao = posicao + 1;
}
}
ja pensou em criar via ant ?? a ant poderia criar o xhtml e a classe ‘Bean’ e ou ‘Dao’ para isso, que acha ?
Bom pessoal,
Eu possuo dois projetos que funcionam próximo ao que você quer.
No primeiro projeto é necessário apenas definir a classe e acrescentar algumas anotações nos atributos. Essas anotações definem as propriedades de cada campo em tela.
Ex:@properties(length = 10)
private String name;
Já no segundo projeto é exatamente como você precisa.
Temos uma classe que define os objetos em tela (campos, tabelas, etc…).
Cada objeto da tela possui um info, que é onde se encontram as propriedades de cada objeto.
O segredo está na criação de converters para cada tipo de objeto em tela.
Ex:
Se um objeto for do tipo String, então você terá que criar um converter que crie um
Se um campo/objeto for do tipo lista terá que ter um converter para criar um
e assim por diante…
Quando eu falo em classe ou objeto já estou me referindo a uma tabela no banco de dados nesse caso.