如何在jsp中转换控制器动作值以及如何将属性发送到控制器动作?

时间:2013-11-12 13:28:10

标签: java jsp controller parameter-passing

我想将数据发送到控制器操作,我希望从操作中获取价值。但我无法发送值,我无法将值从控制器转换为布尔值,字符串等。

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 %>

1 个答案:

答案 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。

相关问题