2009-08-26 3 views
0

스프링 컨트롤러 파일에서 "buttonpressed"라는 modelview 객체를 정의했으며 abcd.java와 같은 컨트롤러에서 뷰로 반환되는 ftl (freemarker) 파일에서 해당 modelview 객체에 액세스해야합니다.java 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"); 
    } 

다음과 같이하지만 난이 아약스 함수 "의 buttonPressed"이라는 개체에 액세스하는 방법을 잘 모르겠습니다. 나는 아래에 언급 된 방식으로 작성했지만 내가 "partner.do"를 호출하지 않고 submit link를 클릭 할 때 #buttonPressed가 undefind라고 말하는 오류를 던지고있다. (하지만 아래의 스크립트에서 제대로 작동하고 "partner.do"를 호출하고 심지어 데이터 게시)

그렇다면 javscript 코드에서 오는 문제는 "buttonPressed"의 잘못된 사용 또는 스프링 컨트롤러 abcd.java 파일의 문제 일 수 있습니다. 표시되는 HTML 코드를 가정

<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

은 문자열이기 때문에 당신이 그것에 $('#optInContent').html()를 호출 할 때 액세스 할 수 abcd.java에서 어떤 모델, 당신이 따옴표로 ${buttonPressed} 묶어야 할 필요가있는보기의 일부입니다.

0

또는 그래도 문제가 해결되지 않으면 페이지 의 상단에 자바 스크립트 변수로 출력하고 나중에 읽기는 DOM을 사용 할 수

VAR의 buttonPressed = $ {의 buttonPressed}하지만 솔루션이 작동 위의 생각 . 하지만 일반적으로이 접근 방식은 페이지에서 자바 스크립트 작업이 많고 백엔드 데이터 이 필요하고 AJAX 호출을 원하지 않는 경우 가장 잘 작동합니다.