2009-05-20 9 views
0

J'ai un bouton dans un fichier .xhtml qui appelle une fonction javascript qui appelle une fonction java à distance (dans un environnement jboss seam). Cette fonction java a un entityManager.persist (objet). Savez-vous pourquoi cette ligne de code ne s'engage pas dans la base de données? Il est dit qu'une transaction n'a pas démarré. Je suppose dans un contexte distant que je n'ai pas commencé une transaction parce que si je mets une action sur ce bouton qui appelle la même fonction java au lieu d'utiliser javascript est ci-dessus, cela fonctionne bien; entityManager persiste l'objet et je peux le voir dans la base de données.Persistance de couture à distance

Est-ce que quelqu'un a des idées comment pourrais-je faire pour réellement persister l'objet en utilisant javascript pour appeler la fonction java? (Je dois utiliser javascript parce que je besoin de la fonction de rappel)

+0

Pourriez-vous poster les parties pertinentes de votre code? C'est un peu difficile à diagnostiquer en fonction de votre texte seul. –

Répondre

0

Pour assurer une transaction Vous pouvez étendre org.jboss.seam.util.Work:

new Work() 
{ 
    @Override 
    protected Object work() throws Exception { 
     // do your stuff 
     return null; 
    } 
}.workInTransaction()