2015-04-29 201 views
1

我现在有2个servlet。我有一个左侧的导航栏和右侧的内容空间。我用的是如下因素JS为了把Servlet的输出在正确的位置getParameter始终为空

$(document).ready(function() {       
     $('#navigation').load('Navigation'); 
     $('#content').load('Content'); 
    }); 

导航里面,我才能得到我想要的内容空间的文章的链接。因此,在我的导航的每个类别名称中,我都引用了另一个servlet。所以导航是一个servlet,而内容是一个servlet。问题是,内容不会“获取”导航的名称。

String category = request.getParameter("category"); 
    String suche = request.getParameter("suche"); 

我试图让类别名称我点击作为ID,或搜索字符串我输入,两者不工作。一类这个样子的导航:

out.println("<li><a><form method='get'><button type='submit' name='category' value='"+ k2.getKategorieNr() + "'>" + k2.getKName() + "</button></form></a></li>"); 

我客串的问题是,每次我点击一个类别,全HTML网页,使重载,这就是导航的servlet的内部名称,不能refered通过内容servlet,getParameter在内容servlet中始终返回null。我只是不知道如何设计我的web应用程序才能使其工作。任何想法?

回答

1

当一个HTML元素提交有一些应用某些规则。首先,表单将被提交到表单的action属性定义的页面。其次,对服务器的请求将包含任何<input>元素的值。

在你的情况下,动作属性丢失,所以你要的东西,如修复代码:

<form action="/servlet1" .... > 

然后,你必须指定什么将被提交。在你的情况下,你没有使用表单提交的字段。因此,在您的servlet中,语句request.getParameter("anyAttribute")将始终返回null。所以,你必须在你的表格,包括提交某些值一样

<form action="/servlet1" method="get"> 
    <input type="hidden" name="category" value="categoryname"/> 
    <button type="submit">submit</button> 
</form> 

此代码将使提交form的在你的web.xml映射为servlet1一个Servlet,你可以在获得类别值使用request.getParameter("category")的Servlet的doGet()方法。

扩展您的功能,您也可以使用ajax提交,以免每次都重新加载页面。我会建议ajax-jQuery实施来做that

+0

我遇到的问题是,我的另一个采用此导航参数的servlet是一个新页面。我现在有结果,没问题。但它不在内容空间内,它是一个完整的新页面。 – Goldi

1

将用于“类别”的值到一个隐藏字段,而不是一个按钮:

out.println("<li><a><form method='get'><button type='submit'>" + k2.getKName() + "</button><input type='hidden' name='category' value='"+ k2.getKategorieNr() + "'/></form></a></li>"); 
+0

你能解释一下为什么吗? – Goldi

+0

是的窗体不会发布按钮的值属性内的值。您可以通过运行您的代码并查看URL并确认该类别不在查询字符串中来确认。将其更改为隐藏字段,您将看到它。 – garryp

+0

丹尼斯是否解决了您的问题? – garryp