Jsf formulario

10 respostas
J

pessoal to com uma duvida, é coisa de iniciante rs

mas eu to tentando fazer um formulario de cadastro e nele tem login.
No meu caso, um cadastro pode ter varios logins....

então seria 1 cadastro - N login

na minha entidade ficou
public class Cadastro
@OneToMany
private List login;

//get e set

mas a minha jsp tem todos os campos, mas não estou conseguindo trabalhar com isso...

por exemplo

<h:inputText id="nome" value="#{cadastro.nome}"/>
<h:inputText id="endereco" value="#{cadastro.endereco}"/>
<h:inputText id="bairro" value="#{cadastro.bairro}"/>
<h:inputText id="cidade" value="#{cadastro.cidade}"/>
<h:inputText id="uf" value="#{cadastro.uf}"/>

//aqui não sei como usar porque eu quero coloca o campo de login e senha

<h:inputText id="usuario" value="#{cadastro.login[o].usuario}"/>
<h:inputText id="senha" value="#{cadastro.login[o].senha}"/>

mas ta dando erro

como fazer isso?

10 Respostas

T

Voce quer listar os logins do usuario aqui:

# <h:inputText id="usuario" value="#{cadastro.login[o].usuario}"/>  
# <h:inputText id="senha" value="#{cadastro.login[o].senha}"/>

?

Se for, manda a lista para um iterador.

Se puder, manda o erro.

J

não quero listar, eu to querendo incluir…a principio vai ser um login para um cadastro (na tela de cadastro)

em outra tela que vai ter opcao de cadastrar outros logins para outras permissoes.

e da forma como eu coloquei acima, ele ta incluindo o cadastro mas não está incluindo o login

filipenf

você terá que ter um objeto Login no MB, e acessar direto ele. Quando o usuário salvar vc vai jogar ele pro Cadastro.

J

eu não queria misturar assim…a classe de cadastro só deveria ter cadastro

eu tinha feito assim, mas achei q tava errado

e na tela ficar chamando ora

e

achei que não era a forma certa de fazer

mas valew entao

filipenf

Bom, pelo que sei não tem muito o que fazer nesse caso, você terá que ter a reference para o objeto. Porém está me parecendo, que você está usando o bean tanto para o model quanto para o MB. Esta não é uma boa prática porque o MB não fica completamente desacoplado do framework do faces.

J

o meu ta separado sim

meu bean tem uma referencia ao list de login

e meu MB tem uma referencia do Login para popular e posterior adicionar ao list.

assim que tá:

public Class Cadastro

@OneToMany
public List login;

//set e get
public Class CadastroBean
//aqui eu achei que tava errado....mas analisando bem, login eh uma composicao de cadastro
private Cadastro cadastro;
private Login login;

//metodos get e set

public void incluir()
{
    login = new Login();
    login.setUsuario(usuario);
    login.setSenha(senha);

   cadastro = new Cadastro();
   //atribuicoes metodo set
   cadastro.setLogin(login);
}
filipenf

ah certo… é que nas suas EL vc usou #{cadastro.nome} eu achei que estivesse usando o model também como MB, foi mal.

qto ao problema, é + ou - isso aí mesmo… não tem mto o que fazer qto à isso, à não ser que alguém tenha alguma outra idéia…

J

trankilo, eu só queria entender se essa era a forma de fazer

mas ta de boa

vlw

thimor

Vamos la:

No seu backbean voce vai fazer assim:

DataModel listaLogins;

public DataModel getListaLogins() {
return listaLogins = new ListDataModel(getLogins());
}

agora vamos para sua pagina JSF.

<h:dataTable value="{cadastro.listaLogins}" var="login">
<h:column>
    <f:facet name="header">
         <h:outputText value="Usuário"/>
    </f:facet>
    <h:inputText value="#{item.usuario}" />
</h:column>
<h:column>
    <f:facet name="header">
         <h:outputText value="Senha"/>
    </f:facet>
    <h:inputText value="#{item.senha}" />
</h:column>
</h:dataTable>

Agora dessa forma so vai funcionar se voce ja tiver logins cadastrados. Caso nao tenha logins cadastrados voce tera que usar uma funcao no seu backBean para as linhas da tabela aparecem para voce colocar as informacoes. Ou entao voce coloca pelo menos um login null na chamada do metodo ficaria assim:

public DataModel getListaLogins() {
setLogins(new Login());
return listaLogins = new ListDataModel(getLogins());
}

se precisar criar mais de um cadastro de login avisa que eu coloco completo.

J

opa…deu certo sim

resolvi dessa forma mesmo

valew pela ajuda :smiley:

Criado 23 de junho de 2009
Ultima resposta 24 de jun. de 2009
Respostas 10
Participantes 4