Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将JavaScript对象从velocity模板传递到Java_Javascript_Java_Javascript Objects_Velocity - Fatal编程技术网

将JavaScript对象从velocity模板传递到Java

将JavaScript对象从velocity模板传递到Java,javascript,java,javascript-objects,velocity,Javascript,Java,Javascript Objects,Velocity,我试图将一个Java脚本对象从.vm文件传递到Java类 var createReqFields = {BookName:"Effective Java",Author:"Joshua Bloch"}; 我可以在浏览器控制台中查看变量createReqFields中的值。我正试图将这个对象从.vm文件传递给Java类 <td> <a id="saveAudit" href="/bookshop/inventoryList.do?action=saveBookInfo&

我试图将一个Java脚本对象从.vm文件传递到Java类

 var createReqFields = {BookName:"Effective Java",Author:"Joshua Bloch"};
我可以在浏览器控制台中查看变量createReqFields中的值。我正试图将这个对象从.vm文件传递给Java类

<td> 
  <a id="saveAudit" href="/bookshop/inventoryList.do?action=saveBookInfo&createReqFields=createReqFields" type="button" class="portalButton">Save Details</a>
</td>

我可以看到控件被传递到我的action类,我可以看到一些SOP,但看不到这个对象。我怎样才能做到这一点

您正在url中传递字符串“createReqFields”。您想使用这个变量。即使您只是使用该变量,JS也会在href中将其转换为[Object Object],而这不是您想要的。我要做的是使用JS设置此锚的href属性:

// html
<a id="saveAudit" href=""> </a>

// JS  ----------------V should be quoted ----------V
var createReqFields = {"BookName":"Effective Java","Author":"Joshua Bloch"};
// would probably change this ----------------------------VV
var url ="/bookshop/inventoryList.do?action=saveBookInfo&BookName=";
url += createReqFields.BookName + "&Author=";
url += createReqFields.Author;

// ad to href
var btn = document.getElementById('saveAudit');
btn.href = url;
//html
//JS------------------V应引用-----------------V
var createReqFields={“BookName”:“Effective Java”,“Author”:“Joshua Bloch”};
//可能会改变这一点------------------VV
var url=“/bookshop/inventoryList.do?action=saveBookInfo&BookName=”;
url+=createReqFields.BookName+“&Author=”;
url+=createReqFields.Author;
//广告至href
var btn=document.getElementById('saveAudit');
btn.href=url;
您需要确保在加载元素后包含JS。您需要解析URL并在后端重建对象。

您正在URL中传递字符串“createReqFields”。您想使用这个变量。即使您只是使用该变量,JS也会在href中将其转换为[Object Object],而这不是您想要的。我要做的是使用JS设置此锚的href属性:

// html
<a id="saveAudit" href=""> </a>

// JS  ----------------V should be quoted ----------V
var createReqFields = {"BookName":"Effective Java","Author":"Joshua Bloch"};
// would probably change this ----------------------------VV
var url ="/bookshop/inventoryList.do?action=saveBookInfo&BookName=";
url += createReqFields.BookName + "&Author=";
url += createReqFields.Author;

// ad to href
var btn = document.getElementById('saveAudit');
btn.href = url;
//html
//JS------------------V应引用-----------------V
var createReqFields={“BookName”:“Effective Java”,“Author”:“Joshua Bloch”};
//可能会改变这一点------------------VV
var url=“/bookshop/inventoryList.do?action=saveBookInfo&BookName=”;
url+=createReqFields.BookName+“&Author=”;
url+=createReqFields.Author;
//广告至href
var btn=document.getElementById('saveAudit');
btn.href=url;

您需要确保在加载元素后包含JS。您需要解析URL并在后端重新构建对象。

这个问题已经有了非常合适的答案,但我打算添加我的问题,以便做出贡献…

了解JavaScript和Velocity的用途可以帮助解决这个问题

Velocity在服务器端处理,JavaScript在客户端完成

当您说要将JS对象传递给java时,您希望将其发送到服务器。您基本上可以向服务器发出异步请求,将数据发布到服务器,然后使用Java读取数据

var createReqFields = {BookName:"Effective Java",Author:"Joshua Bloch"};

$.ajax({
    type: 'POST',
    url: '...',
    dataType: 'JSON',
    data: 'bookName=' + createReqFields.BookName + '&author=' + createReqFields.Author,
    success: function(data) {

    },
    error: function(data) {
        alert('fail');
    }
});

另一种方法是发布整个对象并使用Java解析它

$.ajax({
    type: 'POST',
    url: '...',
    dataType: 'JSON',
    data: { 
      loadProds: 1,
      createReqFields: JSON.stringify(createReqFields) //Serialize it so that it would be easy to send
    },
    success: function(data) {

    },
    error: function(data) {
        alert('fail');
    }
});


我希望这个问题能解决。

这个问题已经有了一个非常恰当的答案,但我将添加我的答案,以期有所贡献。

了解JavaScript和Velocity的用途可以帮助解决这个问题

Velocity在服务器端处理,JavaScript在客户端完成

当您说要将JS对象传递给java时,您希望将其发送到服务器。您基本上可以向服务器发出异步请求,将数据发布到服务器,然后使用Java读取数据

var createReqFields = {BookName:"Effective Java",Author:"Joshua Bloch"};

$.ajax({
    type: 'POST',
    url: '...',
    dataType: 'JSON',
    data: 'bookName=' + createReqFields.BookName + '&author=' + createReqFields.Author,
    success: function(data) {

    },
    error: function(data) {
        alert('fail');
    }
});

另一种方法是发布整个对象并使用Java解析它

$.ajax({
    type: 'POST',
    url: '...',
    dataType: 'JSON',
    data: { 
      loadProds: 1,
      createReqFields: JSON.stringify(createReqFields) //Serialize it so that it would be easy to send
    },
    success: function(data) {

    },
    error: function(data) {
        alert('fail');
    }
});


我希望能成功。

这是我通过这个物体的唯一方法吗。因为此对象将包含超过25个字段。在URL中添加所有字段不是一个好做法,对吗?如果我错了,请纠正我,我想是的。如果你传递那么多东西,我不会使用GET请求。我会使用表单中的POST。在这种情况下,我唯一能做的就是使用ajax?我应该只使用Java中的Restful服务来捕获这个对象吗?或者其他不使用Restful服务的方式?AJAX可能是一种选择,具体取决于您要做什么。但在发送对象之前,必须确保使用有效的JSON构造对象。然后是后端的简单JSON解析。REST服务是您可以选择的另一种方式,但我认为AJAX会更简单。非常感谢。我试试看。这是我唯一能通过这个物体的方法吗。因为此对象将包含超过25个字段。在URL中添加所有字段不是一个好做法,对吗?如果我错了,请纠正我,我想是的。如果你传递那么多东西,我不会使用GET请求。我会使用表单中的POST。在这种情况下,我唯一能做的就是使用ajax?我应该只使用Java中的Restful服务来捕获这个对象吗?或者其他不使用Restful服务的方式?AJAX可能是一种选择,具体取决于您要做什么。但在发送对象之前,必须确保使用有效的JSON构造对象。然后是后端的简单JSON解析。REST服务是您可以选择的另一种方式,但我认为AJAX会更简单。非常感谢。我试着在我的文档中添加这个ajax调用。但我看到的错误如下:错误500:org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常为org.springframework.context.ApplicationContextException:无法加载URL[/views/addInventoryInfo.vm]的Velocity模板;嵌套的异常是org.apache.velocity.exception.ParseErrorException:在/views/addInventoryInfo.vm的第113行第40列遇到“{”,应为“(………)\\\\”…“\\\”…“*\\”…“*\\”…“{…”之一…修复了它…由于$是velocity变量本身的一部分,它试图以同样的方式转换$.ajax({});因此改为jQuery.ajax({});非常感谢您的建议我尝试在document.ready中添加此ajax调用。但我发现错误如下:错误500:org.springf