2009-04-17 6 views
6

Je commence juste à soulever et j'essaye maintenant de changer une forme normale à une forme d'ajax mais la méthode processEntryAdd n'est jamais appelée. Toute idée de comment réaliser ce que j'essaye de faire, ou pourquoi le code ci-dessus ne fonctionne pas. Les valeurs des deux champs de formulaire sont soumises lorsque le bouton est enfoncé et que les deux variables locales firstName et lastName sont définies mais que la fonction associée à SHtml.submit n'est pas appelée.Scala ascenseur cadre, formulaire ajax qui soumet plusieurs valeurs?

Merci!

Répondre

1

En réponse à cette question David Pollak a suggéré d'utiliser

"soumettre" -> SHtml.hidden ("Ajouter un utilisateur", processEntryAdd) ++

sur la liste de diffusion de levage.

+0

Et cela fonctionne, mais malheureusement, doesn ne résoudrons pas tout le problème. Une partie du puzzle qui me manque encore est de re-rendre une partie de la page après une réponse ajax. – ivans

9

Cette question est un peu vieux, mais j'ai récemment besoin de savoir moi-même, et c'est la meilleure solution que je l'ai vu jusqu'à présent:

ajaxForm(
    bind("entry", xhtml, 
     "firstName" -> text(firstName, firstName = _), 
     "lastName" -> text(lastName, lastName = _), 
     "submit" -> submit("Add user", processEntryAdd _), 
    ) ++ hidden(processEntryAdd _) 
) 

En ajoutant le traitement à un élément de formulaire caché vous obtenir de garder le bouton soumettre, sans changer le code de la vue.

Vous pouvez ajouter un comportement côté client en ayant processEntryAdd() retourne une JsCmd:

def processEntryAdd() { 
    Log.info("processEntryAdd: " + firstName + ", " + lastName) 
    JsRaw("alert('process entry added')") 
} 
+0

Merci, cela ressemble à une solution facile, va essayer bientôt. – ivans

+0

Dans le dernier extrait, il devrait y avoir '=' pour empêcher 'processEntryAdd' de devenir automatiquement' Unit'. – Owen

Questions connexes