getParameter 始终为空
getParameter always null
我现在有 2 个 servlet。我左边有一个导航栏,右边有一个内容space。我使用以下 JS 将 servlet 输出放在正确的位置
$(document).ready(function() {
$('#navigation').load('Navigation');
$('#content').load('Content');
});
在导航中,我有链接以便在内容 space 中获取我想要的文章。因此,在导航的每个类别名称上,我都有对另一个 servlet 的引用。所以导航是一个servlet,内容是一个servlet。问题是,内容没有 "get" 导航名称。
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 returns 在内容 servlet 中始终为 null。我只是不知道如何设计我的网络应用程序才能使其正常工作。有什么想法吗?
将 "category" 的值放入隐藏字段而不是按钮:
out.println("<li><a><form method='get'><button type='submit'>" + k2.getKName() + "</button><input type='hidden' name='category' value='"+ k2.getKategorieNr() + "'/></form></a></li>");
当提交 html 元素时,有一些适用的规则。首先,表单将提交到由表单的 action
属性定义的页面。其次,对服务器的请求将包含任何 <input>
元素的值。
在您的情况下,缺少 action 属性,因此您需要使用以下内容修复您的代码:
<form action="/servlet1" .... >
然后您必须指定要提交的内容。在您的情况下,您没有随表单提交的字段。因此在您的 servlet 中,语句 request.getParameter("anyAttribute")
将始终 return 为空。所以你必须在你的表单中包含一些要提交的值,比如
<form action="/servlet1" method="get">
<input type="hidden" name="category" value="categoryname"/>
<button type="submit">submit</button>
</form>
此代码会将 form
提交到映射在您的 web.xml 中的 Servlet 作为 servlet1
,您可以在 doGet()
中获取类别值使用 request.getParameter("category")
.
的 Servlet 方法
为了扩展您的功能,您还可以使用 ajax 提交以避免每次都重新加载页面。我会推荐 ajax-jQuery implementation to do that。
我现在有 2 个 servlet。我左边有一个导航栏,右边有一个内容space。我使用以下 JS 将 servlet 输出放在正确的位置
$(document).ready(function() {
$('#navigation').load('Navigation');
$('#content').load('Content');
});
在导航中,我有链接以便在内容 space 中获取我想要的文章。因此,在导航的每个类别名称上,我都有对另一个 servlet 的引用。所以导航是一个servlet,内容是一个servlet。问题是,内容没有 "get" 导航名称。
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 returns 在内容 servlet 中始终为 null。我只是不知道如何设计我的网络应用程序才能使其正常工作。有什么想法吗?
将 "category" 的值放入隐藏字段而不是按钮:
out.println("<li><a><form method='get'><button type='submit'>" + k2.getKName() + "</button><input type='hidden' name='category' value='"+ k2.getKategorieNr() + "'/></form></a></li>");
当提交 html 元素时,有一些适用的规则。首先,表单将提交到由表单的 action
属性定义的页面。其次,对服务器的请求将包含任何 <input>
元素的值。
在您的情况下,缺少 action 属性,因此您需要使用以下内容修复您的代码:
<form action="/servlet1" .... >
然后您必须指定要提交的内容。在您的情况下,您没有随表单提交的字段。因此在您的 servlet 中,语句 request.getParameter("anyAttribute")
将始终 return 为空。所以你必须在你的表单中包含一些要提交的值,比如
<form action="/servlet1" method="get">
<input type="hidden" name="category" value="categoryname"/>
<button type="submit">submit</button>
</form>
此代码会将 form
提交到映射在您的 web.xml 中的 Servlet 作为 servlet1
,您可以在 doGet()
中获取类别值使用 request.getParameter("category")
.
为了扩展您的功能,您还可以使用 ajax 提交以避免每次都重新加载页面。我会推荐 ajax-jQuery implementation to do that。