Как поймать определенное значение из контроллера в JQuery? - PullRequest
0 голосов
/ 04 февраля 2012

Итак, я работаю над JQuery. Когда я нажимаю кнопку отправки, данные добавляются в базу данных, и появляется окно с предупреждением, в котором отображается идентификатор новых данных. Вот некоторые из кода

    $(function(){
    $('#submit').click(function()
    {       
        if{
          str = "some.htm?type=input&memo="+$("#memo").val()+"&description="+$("#description").val();                       
                             $.ajax({

                                url : str,
                                async : 'false',
                                success : function (id)   
                                                            { alert("....."); // I want                    the alert to display the newID after the data are successfully inserted into database}
                                }});  
                 }
   }});

а вот и контроллер

protected Object formBackingObject(HttpServletRequest request) throws ServletException {
    Something something = new Something();
        dbHelper db = new dbHelper();


        if(request.getParameter("type")!= null)
        {
            type = request.getParameter("type");
            String memo = request.getParameter("memo");
            String description = request.getParameter("description");

            if(type.equalsIgnoreCase("input") == true)
                {
                String newId = db.getCode("idSome", "vrs_somedatabase", "PYR"); //will return newest id from database
                db.InsertSome(id, memo, description); //insert data into database, ignore it

                }
        }    
        return iuom;

    }  

У меня есть другой метод, но он тоже не работает .. Вот коды

$.post("some.htm", { memo: $("#memo").val(), description: $("#description").val() },
                                   function(id) {
                                     alert(....); // I want to display the newID after the data are successfully inserted into database
                                   }); 

и контроллер

public ModelAndView onSubmit(Object command) throws Exception {
        inpt = (some) command;

            if
        {
            dbHelper db = new dbHelper();
            String newId = db.getCode("idSome", "vrs_somedatabase", "PYR"); //will return newest Id from database
            db.InsertSome(id, inpt.getMemo(), inpt.getdescription()); //insert into database, ignore it
        }
        ModelAndView model = new ModelAndView("someView","some","model");
        ModelAndView model = new ModelAndView("someView");
        model.addObject("newId",newId);

        return model;


    }

Вопрос в том, что я не могу отобразить новый идентификатор. Как я могу передать его из контроллера в JQuery?

Редактировать: я нашел ответ

Я нашел ответ .. Итак, я в основном создаю другое представление с именем temporer.jsp, его функция просто помогает мне сохранить значение

<%@ include file="/WEB-INF/jsp/include.jsp" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page language="java" import="java.util.*"%>
<%@ page language="java" import="java.text.*"%>

${newId}

тогда я использую это

$.post("some.htm", { memo: $("#memo").val(), description: $("#description").val() },
                                   function(newId) {
                                     alert(newId);
                                   }); 

public ModelAndView onSubmit(Object command) throws Exception {
        inpt = (InputPaymentTerm) command;

        ......


        ModelAndView model = new ModelAndView("temporer");
        model.addObject("newId",newId);

        return model;

    }

1 Ответ

1 голос
/ 06 февраля 2012

Ух ты, держи лошадей, мой друг :) Создание временного представления для него - плохая идея. В вашем коде есть несколько вещей, которые могут быть улучшены.

Вообще говоря, вы все еще используете старый способ оркестровки контроллера в Spring. Несмотря на то, что это все еще верный способ сделать что-то, вы действительно должны использовать аннотации Spring.

Таким образом, вы сможете писать очень простые и аккуратные контроллеры, например:

@Controller
public class MyController() {

   @RequestMapping("/some.htm")
   public @ResponseBody Long someActionImpl() {
      // some business logic 
      return id;
   }

}

В этом случае нет необходимости создавать дополнительные представления для возврата нужных вам данных .

Подробнее смотрите в документации 1013 *.

Если вы хотите придерживаться «старого способа» реализации контроллеров, имейте в виду, что formBackingObject не должен сохранять данные в базе данных, если вы не знаете, что делаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...