【问题标题】:How should I pass a value to a page?我应该如何将值传递给页面?
【发布时间】:2012-11-20 19:21:46
【问题描述】:

我是 JSP 新手,正在尝试从 ASP.NET 过渡(这是完全不同的)。

我基本上有一组 html 输入按钮。按下时,这些按钮中的每一个都应重定向到同一页面。但是,我也想传递一个参数,即我希望页面根据哪个按钮启动重定向而表现不同。

到目前为止,我所做的是将按钮包装在一个表单中,该表单与 servlet 的 GET 方法进行通信。从这里,我可以看到按下了哪个按钮。

我现在想重定向到页面并传递被按下的按钮的值。如何才能做到这一点?我需要重定向到的页面是一个 JSP 页面。

我的代码:

HTML 页面:

<form action="DashboardServlet" method="get">
<input type="button" value="Button1" name="button1"/>
<input type="button" value="Button2" name="button2"/>
</form>

DashboardServlet

....

    // If-statements to see what button was pressed

....

编辑:我正在考虑使用会话来存储值。这有效吗?

【问题讨论】:

    标签: java html jsp jakarta-ee servlets


    【解决方案1】:
    request.getParameter("button1");
    

    它的工作原理与您在文本框的情况下使用的非常相似。

    检查按下了哪些按钮:-

    if (request.getParameter("button1") != null) {
        // button1 was pressed
    
    } else if (request.getParameter("button2") != null) {
        // button2 was pressed
    }
    

    当您将请求重定向到您的 JSP 页面时,您可以将这些参数添加到请求中。相同的请求参数在您的 JSP 中不可用,除非您明确添加它。


    如果你使用的是:-RequestDispatcher.forward(),那么你可以在request中设置参数:-

    request.setAttribute("button1", request.getParameter("button1").toString());
    

    然后:-

    getServletContext().getRequestDispatcher("/yourJSP.jsp").forward()
    

    在你的JSP 中,使用:-

    request.getAttribute("button1");
    

    或者,如果您使用的是response.sendRidirect,您可以将您的值添加到queryString:-

    String buttonValue = request.getParameter("button1").toString();
    response.sendRedirect("/yourJSP.jsp?button1=" + buttonValue);
    

    【讨论】:

    • 感谢您的澄清。所以我首先必须设置属性并在之后重定向?在这种情况下,一个简单的 response.sendRedirect() 会不起作用吗?
    • @DotNET。是的,在这种情况下,您的请求参数也会丢失。 response.sendRedirect 使浏览器创建一个新的 URL,并且该 URL 将没有您的原始参数。所以你必须再次明确地添加它。
    • 谢谢! :) 正是我想要的。
    • @DotNET.. 或者,如果您有很多参数,您也可以在 session 变量中设置这些参数。传递这么多参数作为查询字符串参数可能会变得复杂。
    • 幸运的是,我一次只通过了一个:)
    猜你喜欢
    • 2015-05-12
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    • 2014-11-21
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    相关资源
    最近更新 更多