【发布时间】:2015-01-14 04:37:30
【问题描述】:
例如:
我有一个类似的js:
$.get('Test_Controller.html',function(response){
alert(response);
});
在我的Test_Controller.html servlet 中我有:
request.setAttribute("test","testData");
RequestDispatcher requestDispatcher =
request.getRequestDispatcher("/test.jsp");
requestDispatcher.forward(request,response);
问题是:
为什么response会一直提醒test.jsp的文字内容而不是我通过getWriter()传递的JSON
编辑:
我需要得到:
TestData testData = new TestData();
request.setAttribute("test",testData);
使用 jQuery 的 $.get() 所以页面不会重新加载,但不幸的是,当我没有调度我的响应对象似乎是空的,当我调度和转发时,当我提醒响应时它会提醒页面的文本。
【问题讨论】:
-
你为什么要准备一个响应然后转发到另一个页面?把json写进去后响应还没有准备好?如果您确实需要调用
test.jsp,为什么不从test.jsp内部生成json? -
请检查我更新的问题以获得澄清。谢谢
-
在您编辑之后,我再也没有看到任何关于 json 的提及。您现在是从 JSP 内部编写 JSON 吗?请说清楚。无论如何要获得 request.setAttribute() 的东西,你不能将它作为 url 参数传递吗?比如
$.get('Test_Controller.html?test=testData') -
@geert3 只是为了清楚
test不是来自 jsp 的变量。它是来自 servlet 的 K,V 对,在这种情况下,恰好是一个具有值"testData"的字符串 -
request.setAttribute("test","testData");不会向响应发送任何内容。我认为您应该阅读一下请求/响应的一般概念。请在下面查看我的答案并尝试一下。应该按原样工作。
标签: java jquery ajax servlets get