ява весна и фтл - PullRequest
       17

ява весна и фтл

0 голосов
/ 26 августа 2009

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

Код контроллера 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 работает нормально, но я не уверен, как получить доступ к этому объекту, называемому «нажатой кнопкой», в этой функции ajax. Я написал так, как указано ниже, но когда я нажимаю на ссылку «Отправить», она не вызывает «partner.do», а также выдает ошибку, говоря, что #buttonPressed is undefind (но в приведенном ниже скрипте работает нормально и вызывает «partner.do» даже размещение данных)

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

Ответы [ 2 ]

0 голосов
/ 27 августа 2009

Или, если это не сработает, вы можете вывести в виде переменной javascript в верхней части страницы. и прочитайте позже, используя DOM,

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

0 голосов
/ 26 августа 2009

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

...