【问题标题】:How to convert controller action value and how to send attributes to controller action in jsp?如何转换控制器动作值以及如何在jsp中将属性发送到控制器动作?
【发布时间】:2013-11-12 13:28:10
【问题描述】:

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

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

【问题讨论】:

    标签: java jsp controller parameter-passing


    【解决方案1】:

    与其从 JSP 对您的 servlet 执行 response.sendRedirect,您的表单应该将 servlet 作为其操作。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多