2009-08-26 7 views
0

J'ai défini un objet modelview nommé "buttonpressed" dans le fichier du contrôleur printanier et j'ai besoin d'accéder à cet objet modelview dans le fichier ftl (freemarker) qui est retourné en vue d'un contrôleur comme abcd.javajava spring et ftl

le code du contrôleur abcd.java est comme ci-dessous

if (questionAnswer.getAnswerId() == 1045) 
    { 
    modelAndView.addObject("buttonPressed","You have been added in mailing list"); 
    modelAndView.setViewName("enterCode_nextSteps"); 
    } 
else 
    { 
    modelAndView.addObject("buttonPressed","Not added in the mailing list"); 
    modelAndView.setViewName("enterCode_nextSteps"); 
    } 

la fonction ci-dessous ajax fonctionne bien actuellement, mais je ne suis pas sûr de savoir comment accéder à cet objet appelé « ButtonPressed » dans cette fonction ajax. J'ai écrit comme ci-dessous mais quand je clique sur le lien de soumission, il n'appelle pas "partner.do" et lance aussi une erreur disant que #buttonPressed est undefind (mais dans le script ci-dessous, il fonctionne correctement et appelle "partner.do" et même les données de publication)

Donc, ce problème vient du code javsscript je veux dire en raison de l'utilisation incorrecte de "buttonPressed" ou pourrait être un problème de fichier contrôleur de printemps abcd.java.

<div class="partnerOptInBox"> 
    <div id="optInContent"> 
    <form name="partnerOptIn"> 
     <h4>Want the Latest</h4> 
     <p class="pad10Top">${partnerOpt.translation}</p> 
     <div class="pad10Top"> 
     <input type="radio" name="questionAnswer['${partnerOpt.questionId}']" value="${partnerOpt.getAnswers()[0].answerId}" class="radioButton" /> <label for="questionAnswer['${partnerOpt.questionId}']" class="formLabel pad20Right">Yes</label> <input type="radio" name="questionAnswer['${partnerOpt.questionId}']" class="radioButton" value="${partnerOpt.getAnswers()[1].answerId}" /> <label for="questionAnswer['${partnerOpt.questionId}']" class="formLabel">No</label> 
     </div> 
     <div id="optInError" class="formError" style="display:none;">Oops... your request did not go through, please try again.</div> 
     <div class="pad15Top"> 
     <a href="javascript:submitOptIn();"><img src="images/theme/btn_opt_in_submit.gif"/></a> 
     </div>       
    </form> 
    <script type="text/javascript"> 
    function submitOptIn() { 
    $('optInError').hide(); 
    dataString = $('#partnerOptIn').serialize(); 
    $.ajax({ 
     data: dataString, 
     url: "partnerOpt.do", 
     timeout: 30000, 
     type: "POST", 
     success: function(html){ 
     var newHtml = "<h4>Thank you</h4><p>We appreciate your time to respond to our request.</p>"; 
     $('#optInContent').html(newHtml); 
}, 

*/trying this code for sucess is throwing me an error /* 
<!-- buttonpressed function--> 
    success: function(html){ 
     $('#optInContent').html(${buttonPressed}); 
    }, 

<!-- buttonpressed function--> 

error: function(){ 
     $('#optInError').show(); 
     } 
    }); 
} 
</script> 

Répondre

0

En supposant que le code HTML affiché fait partie de la vue dans le modèle de abcd.java est accessible, vous devez joindre ${buttonPressed} entre guillemets lorsque vous invoquer $('#optInContent').html() sur elle parce qu'elle est une chaîne.

0

Ou si cela ne fonctionne pas, vous pouvez en sortie javascript variable sur le haut de la page et lire plus tard en utilisant DOM,

var ButtonPressed = $ {} ButtonPressed, mais je pense que ci-dessus solution fonctionnera . Mais généralement cette approche fonctionne mieux si vous avez beaucoup de travail javascript dans une page et a besoin de données backend et vous ne voulez pas faire des appels AJAX.

Questions connexes