J'ai un objet composite de domaine comme suit:Comment enregistrer une valeur de champ composite dans Grails GSP?
class Person
{
static embedded = ['forSale']
Boolean isSelling
House forSale
}
class House
{
Integer numBedrooms
}
J'ai un contrôle de sélection pour les numBedrooms comme suit:
<tr class="prop">
<td valign="top" class="name">
<label for="numBedrooms"><g:message code="person.numBedrooms.label" default="Num Bedrooms" /></label>
</td>
<td valign="top" class="value ${hasErrors(bean: personInstance, field: 'forSale.numBedrooms', 'errors')}">
<g:select name="numBedrooms" value="${fieldValue(bean: personInstance, field: 'forSale.numBedrooms')}"
noSelection="${['null':'Select a number...']}"
from="${1..6}"
/>
</td>
</tr>
Notez que j'utilise forSale.numBedrooms dans le fieldValue sur la sélection . Je n'ai pas pu produire de code échafaudé pour que cela prenne en compte la façon dont il est supposé être fait car la vue de création générée par create-views ne contient aucune référence aux champs de l'objet forSale House.
Je n'ai pas non plus été capable d'afficher les exampes de champs composites accédés via GSP, donc c'est un peu une conjecture. Dans tous les cas, la page GSP s'affiche sans erreur, bien que cela puisse être dû au fait que je n'ai pu enregistrer aucune donnée.
j'envoie la valeur de numBedrooms retour dans le cadre d'une chaîne de requête URl ...
& numBedrooms = 2
Quand je fais le code enregistrer dans mon contrôleur est défaillant en silence - au moins rien jamais écrit dans la base de données. J'ai activé la journalisation du débogage pour à peu près tout, mais je ne reçois aucun message dans le journal qui suggère que quelque chose ne va pas, bien que quelque chose soit évident.
Si je supprime le paramètre numBedrooms de la chaîne de requête, alors ma sauvegarde se déroule comme d'habitude, donc je suppose que c'est quelque chose à voir avec la résolution de numBedrooms.
Une idée de ce que je fais mal et ce que je peux faire pour dépister mon problème?
Si vous vérifiez mon code, vous verrez que j'utilise forSale.numBedrooms et j'ai changé le paramètre url pour y faire référence également. Quand je vérifie ce qui se passe sur les paramètres d'URL, mes champs forSale sont regroupés dans un objet. De plus, j'assigne en utilisant l'assignation de params aux propriétés comme vous le suggérez. Le problème est que mes lignes de table ne sont pas mises à jour. Quelque chose dans la pile, que ce soit des grails ou des hibernates, échoue silencieusement. J'ai la journalisation de débogage activée pour tout et un fichier journal de 128 Mo et aucun message indiquant que la mise à jour a échoué. Je n'ai aucune idée de ce qui se passe. – Simon
Votre code a vous avez besoin de code comme –