2009-08-26 4 views
0

Я определил объект modelview с именем «buttonpressed» в файле весеннего контроллера, и мне нужно получить доступ к этому объекту viewview в файле ftl (freemarker), который возвращается как вид с контроллера, например abcd.javajava spring и ftl

abcd.java код контроллера, как показано ниже

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"); 
    } 

ниже функции Ajax работает нормально, но в данный момент я не знаю, как этот объект под названием «buttonpressed» в этой функции AJAX. Я написал так, как описано ниже, но когда я нажимаю ссылку submit, не называя «partner.do», а также бросая ошибку, говоря, что #buttonPressed - undefind (но в сценарии ниже его работы отлично и вызывается «partner.do» и даже проводка данных)

Так что проблема, возникающая из javsscript-кода, я подразумеваю из-за неправильного использования «buttonPressed» или может быть проблемой из весеннего контроллера 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> 

ответ

0

Предполагая, что HTML-код, приведенный в части представления, в котором модель от abcd.java доступна, вам нужно приложить ${buttonPressed} в кавычки, когда вы вызываете $('#optInContent').html() на нем, потому что это строка.

0

Или, если он не работает, то вы можете выводится как переменная JavaScript в верхней части страницы и читать позже с помощью DOM,

вар buttonpressed = $ {buttonPressed}, но я думаю, что выше решение будет работать , Но, как правило, этот подход работает лучше всего, если у вас много работы javascript на странице, и вам нужны бэкэнд-данные , и вы не хотите делать звонки AJAX.