Autor |
Mensagem |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 10/07/2007 16:45:59
|
pedro.goncalves
Equipe
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline
|
Troca para isso aqui entao:
Code:
<n:submit action="definirHome" />Texto aqui</n:submit>
|
Pedro Gonçalves
http://pedrogoncalves.com.br
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 11/07/2007 15:51:30
|
robmsjr
MultiAction
Membro desde: 26/06/2007 19:30:49
Mensagens: 88
Offline
|
rogel.garcia wrote:
Coloque um Integer no seu bean para setar o número de chamadas.
Crie um n:submit para enviar os dados para o servidor..
<n:submit action="montarLista"/>
Crie um método montarLista no controller para receber o bean.. Nesse método vc adiciona as Chamadas a lista do bean e redireciona para a página para o usuário escolher as chamadas
Na outra página utilize um c:forEach para criar vários inputs de chamada
dentro do forEach vc coloca
<c:forEach .... varStatus="status">
<t:property name="chamadas[${status.index}]" />
</c:forEach>
O JSP vai ficar mais ou menos assim:
<select name="chamadas[0].tipochamada">.....</select>
<select name="chamadas[1].tipochamada">.....</select>
<select name="chamadas[2].tipochamada">.....</select>
<select name="chamadas[3].tipochamada">.....</select>
<select name="chamadas[4].tipochamada">.....</select>
<select name="chamadas[5].tipochamada">.....</select>
E isso pode ser mapeado para o bean novamente...
Consegui fazer até ai funcionando beleza, agora qnd eu submeter está tela tenho que capturar a cada num request normal?, ou deveria vim carregado no meu bean home?
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 11/07/2007 15:56:57
|
pedro.goncalves
Equipe
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline
|
Tipo.. dentro do seu bean.. tem a lista :
class bean{
list<bean> lista;
propriedade prop;
}
quando vc por no seu jsp:
lista[0].propriedade
lista[1].propriedade
lista[2].propriedade
lista[3].propriedade
lista[4].propriedade
ele ja preenche automaticamente a lista..
ai no seu controoler vc põe
public ModelAndView action(WebRequestContext request, Bean bean){
entendeu?
|
Pedro Gonçalves
http://pedrogoncalves.com.br
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 11/07/2007 16:10:09
|
robmsjr
MultiAction
Membro desde: 26/06/2007 19:30:49
Mensagens: 88
Offline
|
Saquei, eu tinha testado e não tinha funcionado mas foi por um erro meu.
uma outra duvida:
Eu mapei minha lista assim:
Code:
@OneToMany(mappedBy="home")
public List<Chamada> getChamadas() {
return chamadas;
}
Ela é atualizada sozinha no homeService.saveOrUpdate(home) ?
Valeu
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 11/07/2007 16:24:45
|
pedro.goncalves
Equipe
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline
|
Não.. para isso vc precisa usar o saveOrUpdate strategy...
ou iterar sobre a lista e ir dando update...
O save or update strategy usa assim:
Code:
Bean bean = ...;
new SaveOrUpdateStrategy(hibernateTemplate, bean)
.saveEntity()
.saveOrUpdateManaged("lista")
.execute();
nesse caso, ele salva a entidade e a lista que ta dentro dela..
Entendeu?
|
Pedro Gonçalves
http://pedrogoncalves.com.br
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 11/07/2007 16:46:55
|
robmsjr
MultiAction
Membro desde: 26/06/2007 19:30:49
Mensagens: 88
Offline
|
Em que classe/metodo eu crio esse saveOrUpdateStrategy?
E somente mapeado ele tenta inserir a lista no banco agora não preeche o idhome no bean chamada...segue o código
chamada:
Code:
@JoinColumn(name="idhome")
@ManyToOne(targetEntity=org.neo.exemplo.bean.Home.class)
public Home getHome() {
return home;
}
home:
Code:
@OneToMany(cascade = {CascadeType.ALL},mappedBy="home")
public List<Chamada> getChamadas() {
return chamadas;
}
erro:
Code:
2007-07-11 16:27:22,964 [http-8080-Processor24] ERROR org.hibernate.util.JDBCExceptionReporter - Entrada em lote 0 insert into Chamada (idhome, idconteudo, idtipochamada, idchamada) values (NULL, NULL, 1, 1) foi abortada. Chame getNextException para ver a causa.
2007-07-11 16:27:22,964 [http-8080-Processor24] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 0, SQLState: 23502
2007-07-11 16:27:22,964 [http-8080-Processor24] ERROR org.hibernate.util.JDBCExceptionReporter - ERROR: null value in column "idhome" violates not-null constraint
2007-07-11 16:27:22,982 [http-8080-Processor24] ERROR org.hibernate.event.def.AbstractFlushingEventListener - Could not synchronize database state with session
esse erro é por causa do saveOrUpdateStrategy?
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 11/07/2007 19:09:13
|
rogel.garcia
Xiita
Membro desde: 17/04/2007 16:35:03
Mensagens: 275
Offline
|
Para mapear manytoone vc precisa disso aqui
Code:
@JoinColumn(name="idhome")
@ManyToOne(fetch=FetchType.LAZY)
public Home getHome() {
return home;
}
O FetchType.LAZY é opcional, mas é recomendável
O oneTomany vc mapeia assim:
Code:
@OneToMany(mappedBy="home")
public List<Chamada> getChamadas() {
return chamadas;
}
Para salvar A lista de chamadas quando salvar o home...
No seu HomeDAO vc pode sobrescrever o updateSaveOrUpdate ou sobrescrever o saveOrUpdate.
Sobrescrevendo o updateSaveOrUpdate
vc coloca dentro do método apenas o comando para atualizar a lista
Code:
public void updateSaveOrUpdate(SaveOrUpdateStrategy save) {
save.saveOrUpdateManaged("chamadas");
}
(A variável save é o parametro do updateSaveOrUpdate)
Atualizando o saveOrUpdate
vc coloca dentro do método:
Code:
public void saveOrUpdate(Home bean) {
new SaveOrUpdateStrategy(hibernateTemplate, bean)
.saveEntity()
.saveOrUpdateManaged("chamadas")
.execute();
}
bean no caso seria o home
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 11/07/2007 21:30:40
|
robmsjr
MultiAction
Membro desde: 26/06/2007 19:30:49
Mensagens: 88
Offline
|
Valeu pela ajuda, vou estar testando isso logo.
abraços;
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 12/07/2007 10:07:25
|
robmsjr
MultiAction
Membro desde: 26/06/2007 19:30:49
Mensagens: 88
Offline
|
No caso para o codigo:
Code:
public void saveOrUpdate(Home bean) {
new SaveOrUpdateStrategy(hibernateTemplate, bean)
.saveEntity()
.saveOrUpdateManaged("chamadas")
.execute();
}
funcionar eu preciso criar uma variavel hibernateTemplate sem get e set é isso?
EDIT: troquei hibernateTemplate por getHibernateTemplate(), e tá funcionando legal. valeu!
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 12/07/2007 10:22:01
|
rogel.garcia
Xiita
Membro desde: 17/04/2007 16:35:03
Mensagens: 275
Offline
|
hibernateTemplate vc tem em qualquer DAO..
Se não tiver, o método getHibernateTEmplate() com certeza tem...
|
|
 |
|