【发布时间】:2013-02-01 06:54:04
【问题描述】:
我有两个 HTML 表单,一个有隐藏字段标签,另一个没有标签。在验证具有隐藏字段标记的第一个 HTML 表单时,我可以通过获取它的字段名称和值在 servlet 中进行验证。示例如下,
带有隐藏标签的 HTML 表单
<form action="/myServlet" method="post" enctype="multipart/form-data">
<input type="hidden" name="myname" value="myvalue"/>
<input type="file" name="file"/>
<input type="submit" value="Submit"/>
Servlet 验证隐藏字段
ServletFileUpload upload = new ServletFileUpload();
FileItemIterator iter;
iter = upload.getItemIterator(request);
while (iter.hasNext()) {
item = iter.next();
String fileName = item.getName();
String fieldName = item.getFieldName();
if (item.isFormField()) {
String fieldValue = Streams.asString(item.openStream());
if (fieldName.equals("myname")){ //validating Hidden form tag name
// some process goes here
}
}
使用上面的代码,我可以验证隐藏表单字段,但是如果我有一个如下的 HTML 表单,它没有隐藏标记,那么如何处理我的 servlet 以进行验证。
没有隐藏标签的 HTML 表单
<form action="/myServlet" method="post" enctype="multipart/form-data">
//No hidden tag
<input type="file" name="file"/>
<input type="submit" value="Submit"/>
我希望能够验证这些不同的案例:
- 带有隐藏字段的表单,以及该字段请求中的一些内容:VALID
- 带有空隐藏字段的表单:无效
- 没有隐藏字段的表单:有效
主要问题是区分最后两种情况。
【问题讨论】:
-
你试过什么,你试过执行它看看,是的,隐藏字段可以在servlet中按名称访问,你试过检查吗??
-
@Sabarish 在这种情况下验证是什么意思?如果您没有 myname 字段,则无法验证它。我认为这是上传文件的另一个名称。如果您没有 myname,您可以分配 fileName 属性。
-
是的,当隐藏标签存在时,我可以访问 servlet,我的问题是,因为我知道隐藏标签的名称,我可以在 servlet 中验证。如果 HTML 中不存在隐藏标记,那么我可以通过什么方式在 servlet 中进行验证。
-
你不能,因为它永远不会被发送到你的 servlet。为什么您希望您的浏览器(或其他客户端)向您的服务器发送不存在的字段值?
-
你想完成什么?您无法访问不存在的内容。