gpt4 book ai didi

java - 处理具有多个按钮/帖子的表单

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:51:05 25 4
gpt4 key购买 nike

我有以下表单设置:

<html>
<head></head>

<body>
<form method="post" enctype="multipart/form-data" action="FileUpload">
<table>
<th>WEX SI Online Validation</th>
<tr>
<td>Step 1: Select File for Validation: </td>
<td><input name="filename" type="file"/></td>
</tr>
<tr>
<td>Step 2: Validate File:</td>
<td><input name="validate" type="button" value="Validate"/></td>
</tr>
<tr>
<td>Step 3: Download and Fix Errors:</td>
<td><input name="download" type="button" value="Download"/></td>
</tr>
<tr>
<td>Step 4: Submit</td>
<td><input name="submit" type="submit" value="Submit"/></td>
</tr>
</table>
</form>
</body>

</html>

我该如何处理?我正在使用 Java/JSP/Servlet,但我不确定如何处理此上传部分的帖子以及其他操作。

我认为最好创建某种表单 Controller 来处理表单的提交并根据用户的操作委托(delegate)给其他 servlet。不过,我不确定如何判断用户选择了什么。

最佳答案

至于每隔一个正常<input>元素,name-value一对<input type="button">将作为请求参数发送。

主要的警告是 <input type="button"><button>元素在 MSIE 中无法正常工作。在所有 MSIE 版本中,value按钮元素的属性不会作为参数值发送,而是发送其主体(标签内容)!

此外,在 IE6 中还有另一个惊人的错误:不仅会发送按下按钮的名称-值对,而且还会发送表单中所有其他未按下按钮的名称-值对!这样你根本无法区分服务器端按下的按钮。

适用于所有浏览器的解决方案是使用 <input type="submit">并给它们一个不同的名称(或相同的名称但不同的值)。

例如

<input type="submit" name="validate" value="Validate">
<input type="submit" name="download" value="Download">
<input type="submit" name="submit" value="Submit">

结合

if (request.getParameter("validate") != null) {
// Validate button pressed.
} else if (request.getParameter("download") != null) {
// Download button pressed.
} else if (request.getParameter("submit") != null) {
// Submit button pressed.
}

<input type="submit" name="action" value="Validate">
<input type="submit" name="action" value="Download">
<input type="submit" name="action" value="Submit">

结合

String action = request.getParameter("action");
if ("Validate".equals(action)) {
// Validate button pressed.
} else if ("Download".equals(action)) {
// Download button pressed.
} else if ("Submit".equals(action)) {
// Submit button pressed.
}

最后一种方法提供了更多可能性,可以在 Java 级别更好地抽象一个和另一个。

顺便说一下,我当然假设您已经在使用 Apache Commons FileUpload处理多部分表单数据,必要时借助 Filter which puts the multipart form data back in the request parameter map , 否则你不会从 HttpServletRequest#getParameter() 得到任何东西.

关于java - 处理具有多个按钮/帖子的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2147455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com