将表单参数从JSP发送到Struts操作类

时间:2011-11-29 20:20:11

标签: java forms jsp struts

我正在我正在构建的网站中实现搜索功能,其中包括使用提交的文件名称的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。我一直在研究这个问题并且无法弄明白。奇怪的是,当我在另一个项目上工作时,它曾经为我工作过一段时间。我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:1)

它是null,因为您使用multipart/form-data表单编码而不是(默认)application/x-www-form-urlencoded。基本上,您必须(让Struts)从多部分表单数据主体中提取文本字段,方法与您(或Struts)提取上载文件的方式相同。或者,由于表单中实际上没有<input type="file">字段,因此只需删除enctype属性即可。

另见