Formulario dinamico

6 respostas
renato_ramos

Boa tarde ^^’

pessoal eu qru fazer um desse

http://www.mauriciofaustino.com/exemplos/campos%20dinamicos/#

mas com jsf… eu estou usando visual web pack com netbeans

é possivel??

6 Respostas

yorgan

Utilize um List no bean

private List<String> telefones; //ou uma lista do objeto que for

e assim o loop na página

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!-- importe a taglib do JSTL -->

<c:forEach items="#{seuMB.telefones}" var="telefone">   
    <h:inputText value="#{telefone}"> <h:commandButton value="Remover" />
</c:forEach>

[]´s

Daniel

renato_ramos

cara me tira uma duvida por favor …

como eu to usando visual… o netbeans cria td automatico… então eu to fazendo mas não sei mt bem oq eu to fazendo… pq eu não to com mt tempo para estudar sacas??

qndo eu crio uma Nova Pagina visual… aquela classe java que é gerado automatico… é o beam da pagina??

to indo tentar oq vc disse ^^’

valeu!

yorgan

Poxa amigo, daí complica.
Acredito que seja sim o ManagedBean da página, mas nunca utilizei o wizard do netbeans para criar código.

Agora, fazer um projeto sem entender a estrutura dele fica difícil né!

[]´s

Daniel

renato_ramos

estou tentando aqui

<jsp:root version="2.1" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:webuijsf="http://www.sun.com/webui/webuijsf">
    <jsp:directive.page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"/>
    <f:view>
        <webuijsf:page id="page1">
            <webuijsf:html id="html1">
                <webuijsf:head id="head1">
                    <webuijsf:script url="novoCampo.js"></webuijsf:script>
                </webuijsf:head>
                <webuijsf:body id="body1" style="-rave-layout: grid">
                    <webuijsf:form binding="#{cadastra_questao.formQuestao}" id="formQuestao">
                        <webuijsf:textField binding="#{cadastra_questao.textFieldQuestao}" columns="50" id="textFieldQuestao" style="left: 96px; top: 72px; position: absolute"/>
                        <webuijsf:label id="label1" style="left: 24px; top: 72px; position: absolute" text="Questão:"/>
                        <input onclick="addElement();return false;" style="left: 288px; top: 120px; position: absolute" type="submit" value="Inserir"/>

                        
                        <c:forEach items="#{cadastra_questao.alternativa}" var="alternativa">
                            <h:inputText value="#{alternativa}"> <h:commandButton value="Remover" />
                        </c:forEach>
                    </webuijsf:form>
                    <webuijsf:form binding="#{cadastra_questao.formAlternativa}" id="formAlternativa" style="height: 192px; left: 48px; top: 168px; position: absolute; width: 384px">
                        <input type="hidden" name="text0" value="" id="0"/>
                    </webuijsf:form>

e a primeira linha da tag c:forEach tah com erro “is not bound”

como eu arrumo?

mt obrigado

renato_ramos

aah funcionou … coloquei a url do tag lib dentro da tag jsp:root

tipow… eu qria inserir campos … jah faz dois dias que eu to tentando desisperadamente isso …

valeeeu

desculpa a “noobisse”

[]'s

yorgan

Amigo, segue uma sugestão.
Não confirmei que funciona pois não estou na minha máquina e não tenho ambiente de desenvolvimento para testar.

public class PessoaFaces {
     
     private List<Pessoa> lista;
     
     public PessoaFaces() {
          lista = new ArrayList();
     }
     
     public List<Pessoa> getLista() {
          return lista;
     }
     
     /*
     Adicione o atributo nrLinha no objeto Pessoa. Esse campo não precisa estar no banco de dados. Ele serve apenas para controle de visual. Você precisa dele pois não pode contar com o ID da pessoa, uma vez que você pode estar removendo uma linha que ainda não esteja no banco de dados.
     */
     public void addField() {
          Pessoa person = new Pessoa();
          person.setNrLinha(this.lista.size()) 
          lista.add(person);
     }
     
     public void deleteField() {
          FacesContext context         = FacesContext.getCurrentInstance();
          HttpServletRequest req       = (HttpServletRequest) context.getExternalContext().getRequest();
          Integer nrLinha              = new Integer(req.getParameter("nrLinha"));
          for(int i = 0; i < lista.size(); i++) {
               Pessoa person = lista.get(i);
               if(person.getNrLinha().equals()) {
                    lista.remove(i);
                    break;
               }
          }
     }
     
     public String listar(){
          for(Pessoa p1 : lista){
               System.out.println(p1.getNome());
          }
          return "";
     }

}

JSP:

<h:form>   
     <a4j:commandLink action="#{pessoaFaces.listar}" value="Listar" reRender="listaPessoas"/>  
     <br />
     <ui:repeat value="#{pessoaFaces.lista}" var="p" id="listaPessoas">   
          <h:inputText value="#{p.nmPessoa}" />  //Você deve especificar qual o atributo que deseja modificar. Suponho que aqui seja o nome da pessoa.
          - 
          <a4j:commandLink action="#{pessoaFaces.deleteField}" value="Delete this" reRender="listaPessoas"> //Aqui ele remove o campo selecionado.
               <f:param name="nrLinha" value="#{p.nrLinha}"></f:param>
          </a4j:commandLink>
          <br />   
     </ui:repeat>   

     <a4j:commandLink action="#{pessoaFaces.addField}" value="Add New" reRender="listaPessoas"/>   
     
     </h:form>
Criado 16 de outubro de 2009
Ultima resposta 18 de nov. de 2009
Respostas 6
Participantes 2