2010-12-04 9 views
0

cela est le code gsp:J'ai mis une valeur dans un texte de type d'entrée mais avec une valeur nulle dans params.descrption.Pourquoi?

td align="left" class="pinkbox" style="height: 35px" width="43%"> 
${fieldValue(bean: bookInstance, field: "description")}<br /> 
input type="text" id="description" name="description" value="${fieldValue(bean: bookInstance, field: "description")}" size="30px" /> 
g:link controller="conference" action="edit" id="${bookInstance.id}">Update </g:link></td> 

Code routinier dans le contrôleur:

def edit ={ 
    println params.description 
    def bookInstance = Book.get(params.id) 
    try{ 
    bookInstance.description = params.description 
    bookInstance.save() 

    redirect(action:'show',id:bookInstance.id) 
    }catch(Exception e){ 
    flow.message ="an error occurred during update" 
    redirect(action:'show',id:bookInstance.id) 
    } 
} 

elle renvoie une valeur nulle tandis que i insérer une valeur dans le contrôle de la zone de texte. J'essaie d'omettre l'attribut de valeur du texte de type d'entrée, mais sans aucun effet

Répondre

0

input type = "hidden" name = valeur "Id" = "$ {bookInstance.id}">

td align = classe "left" = style "pinkbox" = "height: 35px" width = "43%">

$ {fieldValue (haricot: bookInstance, champ: "description")}

g: type textField = "text" name = "Description" value = "$ {fieldValue (bean: bookInstance, champ:" description ")}" size = "30px" />

g: actionSubmit action = 'edit' value = "Update">

3

Je pense que votre problème est que vous utilisez un lien pour appeler l'action du contrôleur, et vous ne soumettez pas de données params. Essayez d'ajouter un attribut params à votre g: lien comme indiqué dans le g: la documentation du lien:

http://www.grails.org/Tag+-+link

Notez que vous allez devoir remplir les params des valeurs dans l'entrée avec le javascript, si vous vraiment envie d'utiliser un lien comme celui-ci.

Alternativement, et peut-être plus correct, utilise une forme. Vous devriez essayer quelque chose comme

<g:form controller='thecontroller' method='edit'>  
    <g:textarea name="" value="" type="text"></g:textarea> 
    ... more fields here including a submit ... 
</g:form> 

Si vous voulez vraiment avoir le bouton « » un lien, vous pouvez utiliser javascript pour lui faire soumettre le formulaire. Cependant, utiliser le formulaire comme prévu est probablement le meilleur. Grails est tout au sujet de conventions ...

+0

@mbayloon: Oui, vous devez utiliser un formulaire pour envoyer des données, et n'oubliez pas la balise buttonSubmit. –

+0

j'essaye d'ajouter un attribut de params à mon g: lien comme dans http://www.grails.org/Tag+-link, avant que je pose cette question mais sans effet, et j'essaye d'employer un formulaire mais il renvoie également null avez-vous une autre réponse ???? –