我想将数据发送到控制器操作,我希望从操作中获取价值。但我无法发送值,我无法将值从控制器转换为布尔值,字符串等。
contact =(List)response.sendRedirect("contact/login.action");
我的contactController的login.action如下:(另外,我尝试了布尔函数)
@RequestMapping(value="/contact/login.action")
public @ResponseBody Map<String,? extends Object> login(@RequestParam Object data) throws Exception {
try{
List<Contact> contacts = contactService.login(data);
return getMap(contacts);
} catch (Exception e) {
}
return null;
}
我的jsp代码如下:
<%@page import="com.loiane.web.ContactController"%>
<%@page import=" com.loiane.model.Contact"%>
<%@page import="java.util.List"%>
<%@ page language="java" pageEncoding="UTF-8"%>
<%
String result;
List<Contact> contact;
String loginUsername = request.getParameter("loginUsername");
String loginPassword = request.getParameter("loginPassword");
contact =(List)response.sendRedirect("contact/login.action");
out.println(request.getAttribute("message"));
if ((null != loginUsername && loginUsername.length() > 0) && (null != loginPassword && loginPassword.length() > 0)) {
if (contact.size()>0)
result = "{success:true}";
else
result = "{success:false,errors:{reason:'Login failed.Try again'}}";
} else {
result = "{success:false,errors:{reason:'Login failed.Try again'}}";
}
%>
<%=result %>
答案 0 :(得分:0)
您的表单应该将servlet作为其操作,而不是从JSP对您的servlet执行response.sendRedirect。
<form action='contact/login.action' method='post'>
您的servlet需要实现doPost。只有一个名为login的方法将无效。
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
您的JSP应该是发送到servlet的登录表单(通过HTML,当您单击提交时,而不是通过JSP代码),并且servlet应该执行所有登录内容,包括request.getParameter调用。
然后,如果有登录错误,servlet应该response.sendRedirect到登录表单jsp。
请注意,response.sendRedirect实际上将浏览器发送到另一个页面。因此,它永远不会返回列表或任何其他数据类型。
最好不要在JSP中使用scriptlet。您可以在servlet中执行所有操作。只需像使用HTML页面一样使用jsp。