1

我在网页上运行了 JavaScript,并且正在运行 Java 线程。一切都在 spring-MVC 框架中。我的想法是我在 jsp 站点中有 JavaScript 代码。控制器制作一个游戏线程,它是在 java 中的。但我需要将数据发送到我的游戏线程。所以我想为此使用控制器。因此,我希望从站点中的 JavaScript 脚本调用控制器以获取更新的数据并从中获得响应。

所以我想在我的 JavaScript 代码中输入这样的代码,以将 JSON 数据发送到控制器。示例代码以查看想法:

$("#btnPostGlEntry").click(function () {
    var glEntries = '{"glEntries":[{"generalLedgerId":"1"},{"accountId":"4"},{"amount":"344.44"},{"description":"Test Entry"},{"debit":"Yes"}]}';
    $.ajax({
        type: "POST",
        contentType: "application/json",
        dataType: "json",
        url: contextPath + "/generalLedger/journalEntries/form",
        data : JSON.stringify(glEntries),
        success: function(data) {
            alert("Success!!!");
        },
        error: function (jqXHR, textStatus, errorThrown) {
            alert(jqXHR + " : " + textStatus + " : " + errorThrown);
        }
    });
});

JSON - Spring MVC:如何将 json 数据发布到 Spring MVC 控制器

或者

var PersonText = '["firstname":"John", "lastname":"Someone"]';
$.ajax({
type : 'POST',
url : "/addnewperson.do",
data : {'personModel' : personText},
datatype : 'json',
success : function(data) {
    var obj = jQuery.parseJSON(data);
}
});

如何从 Javascript 调用 Spring MVC?

所以控制器需要一些这样的想法:

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
@Controller
public class TestController {
    @RequestMapping(value="/test.htm")
    public @ResponseBody Integer add(@RequestParam(value="inputNumber1", required=true) Integer inputNumber1,
            Model model) {
        System.out.println(inputNumber1);
        return inputNumber1;
    }
}

无法将数据从控制器发送到 javascript

所以我有几个问题。第一的。JavaScript 是一种一直有效的游戏代码(浏览器中的图形显示)。我想调用控制器并将数据传输给它。并从控制器(物理引擎)接收数据。所以我不希望从控制器操作中重新加载页面。第二。在这种情况下,通过控制器进行通信是个好主意吗?

4

1 回答 1

1

可以使用它在客户端和控制器之间传输数据而无需重新加载页面。即在控制器中使用 AJAX 和 @ResponseBody 标记。

或者,您可以完全绕过控制器并直接使用已定义的远程方法(例如在服务层中)使用 DWR(Direct Web Remoting)直接传输数据。这对于使用 AJAX 进行直接传输很有用,但它确实绕过了 MVC 框架。

http://directwebremoting.org/dwr/index.html

于 2013-05-09T21:58:49.607 回答