我现在有两个servlet。我左边有一个导航栏,右边有一个内容空间。我使用下面的JS来将servlet输出放在正确的位置
$(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中的名称不能被内容servlet引用,因此getParameter在内容中返回null servlet的。我根本不知道如何设计我的网络应用程序以使其工作。有什么想法吗?
答案 0 :(得分:1)
提交html元素时,某些规则适用。首先,表单将提交到表单的action
属性定义的页面。其次,对服务器的请求将包含任何<input>
元素的值。
在您的情况下,缺少action属性,因此您需要使用以下内容修复代码:
<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,您可以在Servlet的doGet()
方法中获取类别值使用request.getParameter("category")
。
扩展您的功能您还可以使用ajax提交,以便不每次都重新加载页面。我建议ajax-jQuery实施that。