【问题标题】:Sending form parameters from JSP to Struts action class将表单参数从 JSP 发送到 Struts 动作类
【发布时间】:2012-01-09 04:07:26
【问题描述】:

我正在我正在构建的网站中实现搜索功能,其中包括通过提交的文件名称的 md5 哈希搜索以及通过与每个提交的文件关联的注释进行搜索。因此,我应该检测“按 MD5 搜索”或“按注释搜索”按下了哪个按钮。这是我的代码:

表单的JSP代码:

<form id="search" name="search" action = "search.do"
        method="POST" enctype="multipart/form-data">
    <table align = "center">
        <tr>
            <th colspan="4" bgcolor="#004276"><font color="white">
                    Search for Sample 
            </th>
        </tr>
         <tr>
            <td><input name="md5" type="text" value="${form.md5}"/></td>
            <td><input name="md5search" type="submit" value="Search by MD5"/>
        </tr>
        <tr>
            <td><input name="notes" type="text" value="${form.notes}"/></td>
            <td><input name="notessearch" type="submit" value="Search by Notes"/>
        </tr>
    </table>
</form>

search.do 映射到 SearchResultsAction.java。处理请求的 Java 动作类 (SearchResultsAction) 中的代码是:

        if(request.getParameter("md5search").toString().equals("Search by MD5")){
            searchSubmissionsList = submissionsDAO.searchSubmissionsByMD5(form.getMD5());
        }

        if(request.getParameter("notessearch").toString().equals("Search by Notes")){
            searchSubmissionsList = submissionsDAO.searchSubmissionByNotes(form.getNotes());
        }

但我在这里面临的问题是,request.getParameter("md5search") 和 request.getParameter("notessearch") 由于某种原因返回 null。我已经为此工作了一段时间,但无法弄清楚。奇怪的是,当我从事另一个项目时,它曾经对我有用。我在这里遗漏了什么吗?

【问题讨论】:

  • 这是null,因为您使用了multipart/form-data,而不是(默认)application/x-www-form-urlencoded。您必须(让 Struts)从多部分表单数据主体中提取文本字段,就像您(或 Struts)提取上传的文件一样。或者,如果表单中根本没有 &lt;input type="file"&gt; 字段,则完全删除 enctype。另请参阅stackoverflow.com/q/2827912 我完全不知道规范的 Struts 方法是什么,因为我从未使用过 Struts(所以我只是发表评论而不是答案)
  • 感谢没有输入文件,这样就可以了!
  • 好吧,我还是把它作为答案转发了。

标签: java forms jsp struts


【解决方案1】:

它是null,因为您使用multipart/form-data 表单编码而不是(默认)application/x-www-form-urlencoded。基本上,您必须(让 Struts)从多部分表单数据主体中提取文本字段,就像您(或 Struts)提取上传的文件一样。或者,由于您的表单中实际上根本没有 &lt;input type="file"&gt; 字段,因此只需完全删除 enctype 属性即可。

另见

【讨论】:

    猜你喜欢
    • 2012-05-17
    • 1970-01-01
    • 2014-12-14
    • 2013-12-07
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 2013-11-30
    相关资源
    最近更新 更多