Como preencher caixa de listagem com dados de outra domain
10/11/2018 13:01
0
Bom dia!

Preciso preencher a caixa de listagem com dados de outra Domain. Por exemplo, ao cadastrar um setor, devo obrigatoriamente vincula-lo à uma unidade. Essas unidades deverá aparecer na caixa de listagem.

Domain Unidade
class Unidade {
String nome
String endereco
static hasMany=[setores:Setor]
    static constraints = {
nome blank:false, nullable:false, unique:true
endereco blank:false, nullable:false
    }
}
Domain Setor
package sistemaservico
class Setor {
String nome

static hasMany=[unidade:Unidade]
static belongsTo=[Unidade]

    static constraints = {
    nome unique:true

}
}

Controller Unidade

package sistemaservico
class UnidadeController {
def index() {

def listaUnidade = Unidade.list()

render (view:"/unidade/index", model:[unidades:listaUnidade])

}
def adicionar(){
Unidade novaUnidade = new Unidade()
render(template:"/unidade/form", model:[unidade:novaUnidade])

}//fim adicionar

def salvar(){
Unidade unidade=null
if(params.id){
unidade = Unidade.get(params.id)
}else{
unidade = new Unidade()
}
 
unidade.nome= params.txtNome
unidade.endereco= params.txtEndereco
unidade.validate()

if(!unidade.hasErrors()){
unidade.save(flush:true)
render("salvou com sucesso")
}else{
render("Preencha os campos obrigatorios")
}
 

}//fim salvar

def alterar(){
Unidade unidade=Unidade.get(params.id)
render(template:"/unidade/form",model:[unidade:unidade])
}// fim alterar

def excluir(){
Unidade unidade=Unidade.get(params.id)
unidade.delete(flush:true)

def listaUnidade=Unidade.list()
render(template:"/unidade/lista", model:[unidades:listaUnidade])
}//fim excluir
def lista(){

def listaUnidade = Unidade.list()
render(template:"/unidade/lista", model:[unidades:listaUnidade])
}
}//fim index


Controller Setor
package sistemaservico
import sistemaservico.Unidade
class SetorController {
  def index() { 
  
def listaSetor = Setor.list()
render (view:"/setor/index", model:[setores:listaSetor])
}
def adicionar(){
Setor novoSetor = new Setor()
render(template:"/setor/form", model:[setor:novoSetor])

}//fim adicionar

def salvar(){
Setor setor=null
if(params.id){
setor = Setor.get(params.id)
}else{
setor = new Setor()
}
 
     setor.nome= params.txtNome
 
setor.validate()

if(!setor.hasErrors()){
setor.save(flush:true)
render("salvou")
}else{
render("nao salvou")
}

}//fim salvar

def alterar(){
Setor setor=Setor.get(params.id)
render(template:"/setor/form",model:[setor:setor])
}// fim alterar

def excluir(){
Setor setor=Setor.get(params.id)
setor.delete(flush:true)

def listaSetor=Setor.list()
render(template:"/setor/lista", model:[setores:listaSetor])
}//fim excluir
def lista(){
def listaSetor = Setor.list()
render(template:"/setor/lista", model:[setores:listaSetor])
}
def listagemUnidade(){
     def unidadeList = Unidade.list()
}
}//fim controller


form setor

<div id="divMensagem"></div>
<g:formRemote name="frmSetor" url="[ controller:'setor',action:'salvar']" update="divMensagem" 
onSuccess="carregarLista()" id="formunidade">
<label for="txtNome" >Setor</label>
<g:textField name="txtNome" value="${setor.nome}" class="form-control"/><br/>
<label for="unidade">Unidade:</label>
<g:select name="unidade"
from="${listaUnidade}"
optionKey="id"
optionValue="nome"
value="${setor?.unidade?.id}"
class="form-control"/><br/>
<input type="submit" name="btnSalvar" value="Salvar"class="btn btn-primary btn btn-lg btn btn-block "/>
<input type="button" name="btnCancelar" value="Cancelar" onclick="cancelar()"class="btn btn-primary btn btn-lg btn btn-block "/>
<input type="hidden" name="id" value="${setor.id}"/>
</g:formRemote>
Tags: Grails, g:select


0
Ola Jean.
Então, tudo o que você precisa mexer é no from do seu g:select.
Veja se enetende como estou fazendo, por exemplo na minha lista de países:

    .....   from="${geo.Pais.findAllByInstalacao(config.InstalacaoService.getInstalacao(), [sort:'nome', order:'asc'])}" optionKey="id" value="${params.nacionalidade?.id}"?    ....

ou no seu caso 

?from="${sistemaServico.Unidade.findAll([sort:'nome', order:'asc'])}" optionKey="id" value="${params.unidade?.id}"

precisa verificar o pacote do seu domínio unidade

Veja também tod a sintaxe do g:select

Boa sorte!
14/11/2018 14:14



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