Cadastrar Endereço de uma Pessoa sem que a lista de todas as pessoas sejam exibidas na endereco/create.gsp
28/10/2014 10:40
0
Fala aí galerinha do bem. kk

Aqui estou eu novamente para lhes encher a paciência com perguntas bobas. Só que eu tenho empacado nesta questão relativamente simples.

Estou com uma classe Pessoa, onde cada pessoa tem um ou vários endereços, relacionamento caracterizado pelo static hasMany = [enderecos:Endereco]. Contudo, quero cadastrar um endereço para uma pessoa, por padrão, sei que o grails trás um combo com todos as pessoas do meu banco. Não é isso que eu queria.

Na verdade eu queria ter um textField CPF para que se possa cadastrar o cpf para ligar a pessoa ao seu respectivo endereço. Caso o cpf não estivesse cadastrado, isso seria tratado do Controller.

Deu mais ou menos para entender ?

Desde já agradeço a ajuda galera.
Tags: Relacionamento Grails


0
Olá Yure,
Os seus endereços estão sendo cadastrados na mesma interface que se cadastra Pessoa? ou vc tem uma tela de cadastro de endereço, onde vc preenche os campos do endereço e seleciona a qual pessoa ele está relacionado?
Essa pessoa "por padrão" que você quer cadastrar o endereço é a pessoa logada?
28/10/2014 17:51


0
Olá Dyego, boa tarde.

1° pergunta
Na verdade não. Tenho uma view create para cada domínio.
2° Pergunta
Não, não é o SecUser do Spring, é apenas uma cadastro de pessoas que o SecUser cadastra.


O que eu gostaria de fazer era ter um campo CPF para que ao cadastrar o endereço, eu pudesse colocar o cpf do usuário para identifica-lo. Diferente do que vem por padrão, uma lista com todas as pessoas cadastradas.

29/10/2014 14:19


0
A forma que você colocou sua dúvida está estranho.

Os métodos (events) do hibernate - afterInsert - não resolveria o seu problema? Mais pode ser encontrado aqui


0
Carlos, não é exatamente isso. Com certeza deve existir alguma maneira de fazer isso através GORM.

Mas seria tipo uma customização de como o Grails trabalha com Relacionamento de Classes nas views.

Reproduzi uma relação entre Teste e TesteFilho para Exemplificar.


class TesteFilho {

String nomeTesteFilho

static belongsTo = [testes:Teste]
static mapping = {
}

static constraints = {
}

public String toString() {
return "${nomeTesteFilho}";
}
}

class Teste {


Date dataTeste
static hasOne = [testeFilho:TesteFilho]

static mapping = {
}

static constraints = {
}


public String toString() {
return "${dataTeste}";
}
}


No form do TesteFilho

<div class="${hasErrors(bean: testeFilhoInstance, field: 'testes', 'error')} required">
<label for="testes" class="control-label"><g:message code="testeFilho.testes.label" default="Testes" /><span class="required-indicator">*</span></label>
<div>
<g:select class="form-control" id="testes" name="testes.id" from="${br.gov.ce.idace.teste.Teste.list()}" optionKey="id" required="" value="${testeFilhoInstance?.testes?.id}" class="many-to-one"/>
<span class="help-inline">${hasErrors(bean: testeFilhoInstance, field: 'testes', 'error')}</span>
</div>
</div>
29/10/2014 17:09


0
Yure,
Vamos ver se entendi: Você tem diversos usuários cadastrados e quer que ao cadastrar um endereço vc possa buscar a qual ele está relacionado usando o CPF do usuário, certo? E você precisa que o usuário encontrado com aquele CPF seja exibido antes de clicar em "create"? se não precisar é mais fácil, basta fazer assim:
1°) Inserir no GSP um campo para o usuário digitar o CPF:

<div class="fieldcontain ${hasErrors(bean: enderecoInstance, field: 'CPF', 'error')} required">
<label for="CPF">CPF<span class="required-indicator">*</span></label>
<g:textField name="CPF" required="" value=""/>
</div>

2°) Adicionar na controller uma busca pelo usuário com esse CPF e atribuir o endereço a ele:

def usuario = Usuario.findByCPF(params.CPF)
endereco.usuario = usuario


Agora se vc precisar exibir o usuário encontrado com o CPF digitado antes de clicar em "create" ai vc pode usar Ajax e carregar o combo com o retorno da busca por usuário com o CPF digitado..

Espero que ajude, se não for isso me corrija por favor.
03/11/2014 10:01


0
Oi Yure,

Você usa este mesmo endereço para outra coisa/domain ?
Se cada pessoa tem apenas um endereço, porque não colocar como embedded ?
Ou como parte do Domain de pessoa ?

Pergunto apenas pois as vezes a solução pode estar apenas na forma de modelar o domain.

[]s
03/11/2014 10:52



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto