【问题标题】:Sending parameters from JSP to spring controller将参数从 JSP 发送到 spring 控制器
【发布时间】:2012-08-01 03:06:34
【问题描述】:

我正在使用 Spring MVC 开发一个 Web 应用程序。我以以下格式将参数从 JSP 传递到 spring 控制器。就像我必须传递两个参数一样,所以我在做

<a href="/spring.html?data1=<%=data1 %>?data2=<%=data2 %>"> Hello </a>

我的假设是在弹簧控制器中,我可以收到如下输出

data1= request.getAttribute("data1");
data2= request.getAttribute("data2");

这是传递参数的正确方法吗?我已经多次运行我的代码,但我的页面仍然给出空指针,所以我怀疑是否是因为这个。你能否请让我知道这件事。谢谢。

【问题讨论】:

    标签: spring model-view-controller jsp


    【解决方案1】:

    至少有2个技术错误:

    1. 您应该将请求参数作为请求参数,而不是作为请求属性。

      data1 = request.getParameter("data1");
      data2 = request.getParameter("data2");
      
    2. 请求参数分隔符是&amp;,而不是?? 是请求查询字符串的分隔符。

      <a href="/spring.html?data1=<%=data1 %>&data2=<%=data2 %>"> Hello </a>
      

    顺便说一句,还有第三个错误,但这更多是设计问题。 Scriptlets are discouraged since a decade.

    【讨论】:

    • 非常感谢您的帮助.. 我会试试这个
    • 在这我们如何传递对象,问题是我在使用 request.getParameter 时无法输入大小写
    • 如果数据 1 和数据 2 是对象,那么我如何在控制器中键入 cast
    • 你犯了一个概念上的错误。 HTML 代码不能包含 Java 对象,而只能包含字符序列。字符序列在 Java 中由 String 表示。因此,您需要将它们转换为字符串,反之亦然。或者您可以将它们存储在某个地方(数据库、会话等)并传递一些唯一标识符。
    【解决方案2】:

    如果是 Spring MVC 控制器,那么您不需要调用 request.getParameter。您可以像这样定义您的方法,参数将由 MVC 框架自动填充:

    @RequestMapping(value="/myRequest", method=RequestMethod.GET)
    @ResponseBody
    public String handleMyRequest(
            @RequestParam String data1,
            @RequestParam String data2
            ) {
       // your handler code here
       // you will have data1 and data2 automatically populated by Spring MVC
    }
    

    【讨论】:

    • 能否请您分享相应的jsp作为如何将对象从那里传递到这里。谢谢。
    • 您的 JSP 可以有一个简单的链接,例如:&lt;a href="/spring.html?data1=&lt;%=data1 %&gt;&amp;data2=&lt;%=data2 %&gt;"&gt; Hello &lt;/a&gt; 我建议阅读一些关于 Spring MVC tutorial 的内容
    猜你喜欢
    • 2017-12-01
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多