【问题标题】:Passing attributes from Backbone model to Spring Controller as arguments将 Backbone 模型中的属性作为参数传递给 Spring Controller
【发布时间】:2016-06-21 18:57:50
【问题描述】:

我有一个表单,用户可以在其中输入自己的绘图程序参数。提交功能肯定是在保存模型,但是当我转到输出页面时,我收到一条错误消息“出现意外错误(类型=不支持的媒体类型,状态=415)。 不支持内容类型‘null’”。
我正在使用主干模型来保存这些参数,所以这是我的模型:

var GraphModel = Backbone.Model.extend({
    defaults: {
        "graphTitle": "",
        "prefix": "",
        "inputFile": "",
        "grType": ""
    }
});

视图中的提交事件将用户值存储在这些属性中。然后它进入一个新页面,“/输出”。提交功能在我看来是这样的……

submit: function( event ){
var model = new GraphModel();

model.set({graphTitle: $( "#graphTitle" ).val(), prefix: $( "#prefix" ).val(), 
    inputFile: $( "#inputFile" ).val(), grType: $( "#grType" ).val()});

var graphTitle = model.get("graphTitle");
var prefix = model.get("prefix");
var inputFile = model.get("inputFile");
var grType = model.get("grType");

model.save();

console.log(graphTitle + " " + prefix + " " + inputFile + " " + grType);

window.location = "http://localhost:8181/output"
}

我正在尝试将图形参数作为模型属性输入,这些属性以

的形式传入
public OntologyGraph(String graphTitle, String prefix, String grType, 
    String inputFile) throws Exception {

然后我有我的控制器代码,我现在只是想用它来返回一个 JSON 格式来测试它。

@RestController
public class GraphController {

    @RequestMapping(value = "/output", consumes = "application/json", 
            produces = "application/json")
    public @ResponseBody OntologyGraph graph(@RequestBody OntologyGraph model) 
            throws Exception {

        return model;

    }
}

【问题讨论】:

    标签: javascript spring backbone.js spring-boot


    【解决方案1】:

    一开始你好像忘记了请求方法

     @RequestMapping(value = "/output", consumes = "application/json", 
                produces = "application/json",method={RequestMethod.GET,RequestMethod.POST})
        public @ResponseBody OntologyGraph graph(@RequestBody OntologyGraph model) 
                throws Exception {
    
            return model;
    }
    

    请注意,我已将 2 POST 和 GET 都放入,但您也可以像这样放入 2

    method=RequestMethod.GET
    

    但是,如果您的问题仍然存在,请尝试像这样指定主干的媒体类型或内容:

    myModel.fetch({
        type: "POST",
        contentType: "application/json"
    });
    

    myModel.save({
        type: "POST",
        contentType: "application/json"
    });
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2011-08-15
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-26
      • 1970-01-01
      • 2020-07-15
      相关资源
      最近更新 更多