Java 重定向到JSP而不是REST调用的JSON响应
我正在做一项任务,创建一个简单的博客,用户可以在这里提问(发帖),答案可以作为评论给出。 凭借我对Java、REST和Jquery的有限知识,我已经设法获取了帖子列表,并将它们显示为一个表。 现在,每当用户点击任何帖子时,他都应该被重定向到另一个页面,在那里可以显示相应的问题评论。 我在Java中实现了一个REST方法,它返回JSON响应以及与传递的post_id相关的注释。 因此,每当用户单击任何帖子时,他都会被重定向到RESTJava 重定向到JSP而不是REST调用的JSON响应,java,json,rest,jsp,Java,Json,Rest,Jsp,我正在做一项任务,创建一个简单的博客,用户可以在这里提问(发帖),答案可以作为评论给出。 凭借我对Java、REST和Jquery的有限知识,我已经设法获取了帖子列表,并将它们显示为一个表。 现在,每当用户点击任何帖子时,他都应该被重定向到另一个页面,在那里可以显示相应的问题评论。 我在Java中实现了一个REST方法,它返回JSON响应以及与传递的post_id相关的注释。 因此,每当用户单击任何帖子时,他都会被重定向到RESTURL(…/services/comments?postID=1)
URL(…/services/comments?postID=1)
,并得到以下响应:
[
{
"postID": 1,
"commentID": 8,
"comment": "These are the answers getting added",
"commenterID": 7,
"commentDate": 1442671662000,
"commentVote": 0
}
]
下面是我为REST调用提供服务的JAVA方法:
@GET
@Produces({ MediaType.APPLICATION_JSON })
public List<Comments> getUserComments(@QueryParam("postID") Integer postID) {
Session ses = HibernateUtil.currentSession();
ses.flush();
List<Comments> comments = null;
if(postID != null)
{
comments = ses.createQuery("select c from Comments c where c.postID="+postID+" order by c.commentDate desc").list();
}
HibernateUtil.closeSession();
return comments;
}
@GET
@产生({MediaType.APPLICATION_JSON})
公共列表getUserComments(@QueryParam(“postID”)整数postID){
Session ses=HibernateUtil.currentSession();
ses.flush();
列表注释=null;
如果(postID!=null)
{
comments=ses.createQuery(“从注释c中选择c,其中c.postID=“+postID+”按c.commentDate desc排序”).list();
}
HibernateUtil.closeSession();
返回评论;
}
同时重定向到JSP的“最简单”方法是什么?我可以在这里解析这个JSON并显示它?您不需要将页面重定向到JSP 您需要的是页面的通用模板(jsp),用于显示文章及其json中的答案。此页面应进行ajax调用,以获取相应帖子(及其答案)的json并在页面中呈现 现在的问题是如何将帖子id传递到此页面。
您可以通过如下设置一个非html标记来实现这一点<代码>。加载页面后,jquery将使用此标记(并提取
值
属性)来形成ajax调用的url
例子 假设您有一个页面来显示所有帖子的列表。此页面看起来像
<a href="post.jsp?post_id=1"> post1</a>
<br>
<a href="post.jsp?post_id=2"> post2</a>
放在url服务/评论中引用的jsp页面中。另外,您不需要使用window.location.href
重定向,您可以简单地使用类似“谢谢您的输入@shanmuga”的超链接,但我仍然不明白在上述情况下value
属性如何是动态的?请注意,我在问题中提到了许多行和JSON(postID=1)只是其中一个示例。我已经编辑了上面的答案。希望代码示例能有所帮助。非常感谢您的时间和努力。这很好。我不知道请求。getParameter(“”
),因此编写了一个函数,通过解析当前窗口位置来提取postID。但是,您所解释的内容非常清晰!!
<body>
<script type="text/javascript">
$(document).ready(
function () {
//extract the post_id from tag value
var post_id = $("post_id").attr("value");
//form the rest url using post_id
var post_url = ".../services/comments?postID="+post_id;
$.ajax(
{
url: post_url,
success: function(data, status, jqXHR, json) {
json_data = JSON.parse(data);
html="";
for(var i=0; i<json_data.length; i++) {
//Comments rendering logic
html+= "<h5>"+json_data[i].comment +"</h5>";
}
$("#container").html(html);
}
}
);
}
);
</script>
<post_id value="<%= request.getParameter("post_id") %>" > </post_id>
<div id="container">
</div>
</body>