我正在使用servlet作为重定向页面的控制器。所以,我有以下链接:
<li><a href="actionController?key=contact">Contact</a></li>
<li><a href="actionController?key=support">Request support</a></li>
我希望在我的控制器中接收此参数,并将页面中的请求重定向到Contact.jsp页面。
因此,我认为那将是:
contact = request.getParameter("contact");
support = request.getParameter("support");
if (contact.equals("contato"))
{
RequestDispatcher view = request.getRequestDispatcher("/WEB-INF/center/Contact.jsp");
view.forward(request, response);
}
else if (support.equals("support"))
{
RequestDispatcher view = request.getRequestDispatcher("/WEB-INF/center/Support.jsp");
view.forward(request, response);
}
然而,无法正常工作,是java.lang.NullPointerException。
由于
答案 0 :(得分:5)
您的servlet代码似乎与您的HTML代码段不匹配。我想你需要写:
String key = request.getParameter("key");
if (key != null && key.equals("contact"))
{
RequestDispatcher view = request.getRequestDispatcher("/WEB-INF/center/Contact.jsp");
view.forward(request, response);
}
else if (key != null && key.equals("support"))
{
RequestDispatcher view = request.getRequestDispatcher("/WEB-INF/center/Support.jsp");
view.forward(request, response);
}
答案 1 :(得分:1)
首先使用param名称key
获取key
值(这是您问题的根本原因)然后只需将字符串文字作为第一个参数进行比较避免任何NullPointerExceotion
:
String key = request.getParameter("key");
if ("contact".equals(key)){
RequestDispatcher view =
request.getRequestDispatcher("/WEB-INF/center/Contact.jsp");
view.forward(request, response);
}else if ("support".equals(key)){
RequestDispatcher view =
request.getRequestDispatcher("/WEB-INF/center/Support.jsp");
view.forward(request, response);
}
如果需要,也可以添加默认处理,即处理key
既不是contact
也不是support
的方案。
答案 2 :(得分:0)
这意味着,找不到“联系”或“支持”参数。在使用它们之前检查它们是否为空。
答案 3 :(得分:0)
请尝试以下代码:
String key = request.getParameter("key");
if(null == key){
// do something
} else if(key.equals("contact")){
// do something else
} else if(key.equals("support")){
// do something else
} else {
// etc
}
答案 4 :(得分:0)
您的请求不会包含任何“联系人”或“支持”参数,而是包含“密钥”参数。
我建议您查看RFC 3986 - 解释URI语法,包括查询参数。