Relacionamento belongsTo
19/06/2012 11:55
0
Bom dia pessoal,

Estou fazendo um projeto de estudo para entender o grails, porém estou com um problema.

Tenho uma classe Despesa que tem os seguintes atributos e relacionamento.

Date dtCompra = new Date();
Date dtVencimento = new Date();
String formaPagto;
String descricao;

static belongsTo = [creador:Credor];

Uma outra classe chamada Credor.

String nome;
String descrica;

static hasMany = [despesa:Despesa]

Criei meus controllers e Views, quando rodo a aplicação me permite adicionar um credor, mas no momento que vou adicionar uma despesa relacionada a esse credor recebo uma mensagem que o valor do combo não pode ser null, mas eu estou setando esse cara. Ou seja, pra mim ele não está conseguindo pegar o id desse cara.

Dei uma olhada no exemplo do Kico "Introdução > Grails: o quê e porquê?" e estou fazendo igual mas não está rolando. Alguém tem alguma idéia do que possa estar ocorrendo ?

Abraços

Tags: Date dtCompra = new Date(); Date dtVencimento = new Date(); String formaPagto; String descricao; static belongsTo = [creador:Credor];


0
Olá, Valdomiro.

Se puder mandar o stacktrace e o código-fonte facilita muito alguém aqui te ajudar, ok?
Com as informações que deu até agora é bem mais demorado e dificil ajudar ;)

Abraços.


0
<div class="fieldcontain ${hasErrors(bean: despesaInstance, field: 'creador', 'error')} required">
<label for="creador">
<g:message code="despesa.creador.label" default="Creador" />
<span class="required-indicator">*</span>
</label>
<g:select id="creador" name="creador.id" from="${despesaweb.Credor.list()}"
optionKey="id" required=""
value="${despesaInstance?.creador?.id}" class="many-to-one"
/>
</div>


<%@ page import="despesaweb.Despesa" %>
<!doctype html>
<html>
<head>
<meta name="layout" content="main">
<g:set var="entityName" value="${message(code: 'despesa.label', default: 'Despesa')}" />
<title><g:message code="default.create.label" args="[entityName]" /></title>
</head>
<body>
<a href="#create-despesa" class="skip" tabindex="-1"><g:message code="default.link.skip.label" default="Skip to content&hellip;"/></a>
<div class="nav" role="navigation">
<ul>
<li><a class="home" href="${createLink(uri: '/')}"><g:message code="default.home.label"/></a></li>
<li><g:link class="list" action="list"><g:message code="default.list.label" args="[entityName]" /></g:link></li>
</ul>
</div>
<div id="create-despesa" class="content scaffold-create" role="main">
<h1><g:message code="default.create.label" args="[entityName]" /></h1>
<g:if test="${flash.message}">
<div class="message" role="status">${flash.message}</div>
</g:if>
<g:hasErrors bean="${despesaInstance}">
<ul class="errors" role="alert">
<g:eachError bean="${despesaInstance}" var="error">
<li <g:if test="${error in org.springframework.validation.FieldError}">data-field-id="${error.field}"</g:if>><g:message error="${error}"/></li>
</g:eachError>
</ul>
</g:hasErrors>
<g:form action="save" >
<fieldset class="form">
<g:render template="form"/>
</fieldset>
<fieldset class="buttons">
<g:submitButton name="create" class="save" value="${message(code: 'default.button.create.label', default: 'Create')}" />
</fieldset>
</g:form>
</div>
</body>
</html>


package despesaweb

class Credor {

String nome;
String descrica;

static hasMany = [despesa:Despesa]

static constraints = {
nome blank:false, nullable: false, maxSize: 40, unique: true
descricao: maxSize: 255;
}
}


package despesaweb

class Despesa {

Date dtCompra = new Date();
Date dtVencimento = new Date();
String formaPagto;
String descricao;

static belongsTo = [creador:Credor];

static constraints = {
dtCompra nullable: false
dtVencimento nullable: false
formaPagto inList: ["A Vista", "Debito", "Credito", "Cheque"], nullable: false, blank: false
descricao maxSize: 255
}

public String toString() {
return formaPagto;
}
}
20/06/2012 02:46


1
olá Valdomiro

tenta a tag assim e depois da um println(params.creador.id) no método save do controlador para ver qual o valor que esta retornando

<g:select from="${espesaweb.Credor.list()}" optionKey="id" name="creador.id" value="${despesaInstance?.creador?.id}"/>
20/06/2012 12:56


0
Resolvido, foi um erro meu mesmo.

Obrigado pela ajuda.
20/06/2012 14:14


0
Qual era o erro Valdomiro ?
09/09/2013 00:08



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