不久前我开始使用 JSP、JSTL、HTML 和 JavaScript,所以这是我的问题:
我需要将 var 的值设置为隐藏的输入值。另一种选择是如果可以使用
进行比较<c:if test="....">
我随请求发送的带有隐藏输入值的变量值。
谢谢。
更新
我一直在尝试,但无法让它发挥作用。
我有一个包含对象 ID 的字段。我还有包含对象的列表,所以我要做的就是找到与该 ID 相关的对象。
<input type="text" name="id1" />
但如果我这样做:
<c:set var="dd" value="${param.id1}" />
<input type="text" value="${dd}" />
输入文本为空,但id1相关文本显示850(即动态值)
有什么建议为什么不起作用吗?
更新 2
我需要“multipart/form-data”,因为我需要在表单中上传图片。我了解如何从 Java 获取参数,但由于我使用的不是服务器而是 JSP 页面,有什么办法吗?只需要读取该输入元素并将其保存在变量中。
最佳答案
您可以通过隐式${param}
变量访问请求参数。
例如http://example.com/context/page.jsp?foo=bar
结合
<c:if test="${param.foo == 'bar'}">
The foo's param value is bar!
</c:if>
<c:if test="${param.foo != 'bar'}">
The foo's param value is not bar, it is: ${param.foo}
</c:if>
会显示第一个条件。
如果您真的想在后续请求中保留一些隐藏的输入元素(您的问题中并没有真正明确),那么您基本上需要做的就是:
<input type="hidden" name="foo" value="${param.foo}">
更新:根据您的更新:您还需要为输入元素指定一个名称。因此,例如
<input type="text" name="id1" value="${param.id1}" />
通过这种方式,它可以通过 request.getParameter("id1")
获得,并且本质上也可以通过 ${param.id1}
获得。你现在看到了吗?
更新 2:根据您在这里的评论:当然这与 enctype="multipart/form-data"
有关。使用这种编码,请求参数不再在参数映射中,而是在请求主体中,因为与二进制数据(文件上传)混淆。解释这一切将是一个很长的故事,但基本上你需要自己解析请求。如果您使用的是 Servlet 2.5 或更早版本,那么 Apache Commons FileUpload在这里很有帮助。请特别阅读那里的“用户指南”和“常见问题”,以查看代码示例并了解如何以正确的方式使用它(也在 MSIE 中!)。您甚至可以决定将 FileUpload 抽象出来,以便您可以按照通常的方式坚持使用 HttpServletRequest#getParameter()
和 ${param}
,另请参阅 this article .
如果您已经在使用 Servlet 3.0,那么您可以使用 HttpServletRequest#getParts()
.您甚至可以将其抽象化,以便您可以按照通常的方式坚持使用 HttpServletRequest#getParameter()
和 ${param}
,另请参阅 this article .
更新 3:哦,您真的不想使用 JSP 来完成所有处理。那里不是为了。是时候学习 Servlet
了。此外,当使用 Filter
将请求正文中的所有参数放回请求参数映射(如两篇文章所述)时,您也不一定需要 Servlet
毕竟。
关于html - 从输入字段值设置 var 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2087399/