我现在有两个servlets了。我在左边有一个导航栏,右边有一个内容空间。我使用折叠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中的名称不能由content引用,因此getParameter在content中总是返回null。我只是不知道如何设计我的网页应用程序,以使其工作。有什么想法吗?
发布于 2015-04-30 08:33:53
当一个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,并且可以使用request.getParameter("category")在Servlet的doGet()方法中获得类别值。
扩展您的功能,您还可以使用ajax提交,以避免每次重新加载页面。我建议使用ajax-jQuery实现来执行那。
发布于 2015-04-29 22:44:36
将“类别”的值放入隐藏字段中,而不是在按钮上:
out.println("<li><a><form method='get'><button type='submit'>" + k2.getKName() + "</button><input type='hidden' name='category' value='"+ k2.getKategorieNr() + "'/></form></a></li>");https://stackoverflow.com/questions/29954760
复制相似问题