Dúvida no formulario Crud com Struts 2 annotation e Hibernate  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
pauloph10
JavaBaby

Membro desde: 12/12/2008 10:04:15
Mensagens: 77
Offline

Olá,

estou iniciando meus estudos com struts 2 annotation e surgiu uma dúvida:
Cenário:
classes: contato , contatoscont (agenda de um contato)
fkidcontato (contatoscont) referencia id de contato segue abaixo as classes com os mapeamentos:

ContatocontAction


Contatocont (classe mapeada)




formulario



Como setar o id do contato no formulario?
jyoshiriro
Virtual Machine Man
[Avatar]

Membro desde: 17/06/2009 14:14:39
Mensagens: 637
Offline

Amigo,

Esse sei "id" deve preferenciamente gerado pelo banco (via autoincremento ou sequences). Existe ainda a opção de "autoincremento" pelo Hibernate, mas acho que isso só pode ser feito com XMLs.
Você pode, na Action, fazer um "select max" para setar manualmente o "id", mas isso seria, na minha opinião, uma POG.

Agora, quanto ao seu código, algumas considerações pessoais:

Evite resultados "sucesso", "erro"... Assim você tme mais chances de erro. Preira as constanstes SUCCESS, ERROR, INPUT e LOGIN que vêem da ActionSupport. Sei que não é preciso você estender essa classe para criar uma Action mas é sempre bom fazê-lo porque ela traz métodos preciosos, como input(), validate(), getText(), addActionErros(), addActionMessages(), dentre outros.

Outra: não precisa ficar indicando todos os detalhes de resultados. Use o poder do "Convention over configuration" do Struts2.
Exemplo: O método

poderia ficar apenas

Assim, os mapeamentos para esse método ficariam, automaticamente:
SUCCESS ("success") - WEB-INF/content/salvarcontatocont.jsp
ERROR ("error") - WEB-INF/content/salvarcontatocont.jsp
INPUT ("input") - WEB-INF/content/salvarcontatocont.jsp

Esses 3 mapeamentos automáticos só não ocorrerão caso você tenha configurado mapeamentos globais no struts.xml.

Mas, pelo visto você não quer que tal mapeamento sempre caia na mesma JSP, correto? Então batsa você criar esses arquivos (isso mesmo, só criar esses):
WEB-INF/content/salvarcontatocont-success.jsp
WEB-INF/content/salvarcontatocont-error.jsp
WEB-INF/content/salvarcontatocont-input.jsp

A simples existência dos arquivos com esse nome faz o Struts2 gerar os mapeamentos pra você. Veja que passa a não existir a necessidade do método "novo()" na sua Action.

Assim, para chamar o JSP de formulário bastaria http://seuhost:suaporta/seucontexto/salvarcontatocont!input.

Agora, um detalhe que me chamou atenção é que após salvar você chamara uma JSP de "listagem", mas onde você carregou a lista do banco? Nesse caso, ou você já tem o método "listar()", use um result "redirectAction".

José Yoshiriro Ajisaka Ramos

PMI CAPM / OMG OCUP Fundamental / ORACLE SCJP 6, SCWCD 5, SCBCD 5

Twitter: @jyoshiriro
[Email] [WWW]
pauloph10
JavaBaby

Membro desde: 12/12/2008 10:04:15
Mensagens: 77
Offline

Obrigado pelas dicas. vou segui-las.
Mas a minha duvida inicial persiste:
o id da tabela pessoa e pessoacont é gerada pelo banco mesmo. A minha duvida está no jsp exemplo:

na classe pessoacont eu tenho um objeto da classe pessoa com o mapeamento manytoone. no banco a coluna é a fkidpessoa

a minha dúvida é como eu vou setar o id da classe pessoa no objeto pessoa da classe pessoacont, olha só:



jyoshiriro
Virtual Machine Man
[Avatar]

Membro desde: 17/06/2009 14:14:39
Mensagens: 637
Offline

Amigo, ainda não entendi bem sua dúvida. Que classe Pessoa é essa?
Faz o seguinte... monta ai um fake da tela que vc quer q apareca e manda o screenshot.

José Yoshiriro Ajisaka Ramos

PMI CAPM / OMG OCUP Fundamental / ORACLE SCJP 6, SCWCD 5, SCBCD 5

Twitter: @jyoshiriro
[Email] [WWW]
pauloph10
JavaBaby

Membro desde: 12/12/2008 10:04:15
Mensagens: 77
Offline

Veja:
Estou fazendo um CRUD onde tenho a seguinte estrutura:

pessoa (id, nome)

contatocont(id, nomecontato, telefone, pessoa(esse é um objeto da classe acima manytoone ou seja aqui eu preciso do id da classe pessoa como chave estrangeira))

eu queria saber como listar os nomes da classe pessoa em um combo no formulario e quando eu postar o formulario que chamara a action que salva um contatocont o atributo contatocont.pessoa.id ser id selecionado na combo.


me fiz entender?
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team