【问题标题】:How to get text from textarea and send it as a parameter of URL如何从 textarea 获取文本并将其作为 URL 的参数发送
【发布时间】:2018-07-09 14:12:13
【问题描述】:

我想从 textarea 获取文本并将其作为表单操作中的参数发送。

所以,我有页面 showarticle.jsp 显示所有文章的 cmets。首先,我在index.jsp上调用,参数comment_ref=null(表示第一次不想加评论)

<a href="showarticle.jsp?id=${row.id}&comment_ref=null">${row.title}</a>

在 showarticle.jsp 我有一个添加新评论的表单

<form action="showarticle.jsp?id=${id_param}&comment_ref=${comment_text_aria_cur}" method="post">
  <textarea name="comment_text_aria_cur" rows="4" cols="50"></textarea>
  <input type="submit" name ="submit" value="Send">
</form>

在这里我再次调用了showarticle.jsp,但在这里我想从文本区域添加文本作为参数comment_ref。

我试过了

<form action="showarticle.jsp?id=${id_param}&comment_ref="<%=request.getParameter("comment_text_aria_cur") method="post">

但还是不行。在这种情况下,我只能看到以前的值。例如,

我写评论“aaa”并按提交 -> comment_ref = null。 我写评论“bbb”并按提交->comment_ref = aaa。

我相信解决方案很简单。谢谢!

【问题讨论】:

    标签: java html jsp


    【解决方案1】:

    首先将 method="post" 更改为 method="get"。通常,Post 不允许通过 url 发送值(但是,您仍然可以使用 javascript 实现查询字符串)。对于 post,值在请求正文中以内容类型指定的格式发送(主要是 application/x-www-form-urlencoded)。

    一旦您将 post 更改为 get,这些值会在您提交表单时自动附加到 url。您无需显式附加它。

    request.getParameter 用于获取表单参数的值,即从 url 请求中获取参数值。您不能使用它来附加值。

    这是一种简单的方法。

    <form action="showarticle.jsp" method="GET">
         <textarea name="comment_text_aria_cur" rows="4" cols="50"></textarea>
         <input type="hidden" name ="id" value="<%= request.getParameter("id_param")%>">
         <input type="submit" name ="submit" value="Send">
    </form>
    

    确保您正在设置 id_param (request.setAttribute("id_param", value) )

    【讨论】:

    • POST 方法可以支持查询字符串数据,尽管它并不常见。如果您使用它,您应该将其用作资源标识而不是提交数据(参考:stackoverflow.com/a/5876931/3652270)。在这种情况下,我认为不应将注释用作查询字符串参数。干杯。
    • 我在 get 上更改了帖子,它导致之前不存在的语法错误(在 sql 语句中)。
    • sql 语句语法错误可能与 get/post 无关。请检查参数值是否正确获取并正确嵌入到sql语句中。
    • 即使没有隐藏类型的输入,它也可以工作。谢谢!
    【解决方案2】:

    通常,您应该将评论数据作为帖子参数传递,而不是作为查询字符串参数。因此,您的代码应如下所示:

    <form action="showarticle.jsp?id=${id_param}" method="post">
      <textarea name="comment_text_aria_cur" rows="4" cols="50"></textarea>
      <input type="submit" name ="submit" value="Send">
    </form>
    

    然后,从目标页面showarticle.jsp,你应该可以调用:

    <% request.getParameter("comment_text_aria_cur") %>
    

    当然,这将返回与您上次请求一起提交到当前页面的值。它可用于处理和/或查看先前提交的评论的值。另一方面,它应该用于为下一个请求格式化表单的操作字符串。


    但是,如果您在提交表单时坚持使用某些数据更改查询字符串,则可以使用 javascript 执行以下操作:

    <html>
    <body>
    <form name="myForm" onsubmit="submitForm();" action="showarticle.jsp" method="post">
      <input type="text" name="id" />
      <textarea name="comment_text_aria_cur" rows="4" cols="50"></textarea>
      <input type="submit" name ="submit" value="Send">
    </form>
    
    <script>
    function submitForm() {
        form = document.forms["myForm"];
        form.action = form.action+"?id="+form["id"].value+"&comment_ref="+form["comment_text_aria_cur"].value;
        return true;
    }
    </script>
    </body>
    </html>
    

    这包括:

    1. 为您的表单命名,以便您可以从 javascript 访问它
    2. 提供在提交表单时执行的 onsubmit 方法
    3. 在 javascript 事件方法中,您可以获取参数的值并使用您想要的查询字符串参数格式化一个新的操作字符串
    4. 将新字符串设置为表单操作

    【讨论】:

    • 谢谢!但不想在我的项目中包含 javascript。我想java有足够的机会。但如果找不到解决方案我会的
    猜你喜欢
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 2016-10-20
    • 2020-10-30
    • 1970-01-01
    • 2020-06-03
    相关资源
    最近更新 更多