我不久前开始使用JSP,JSTL,HTML和JavaScript,所以这是我的问题:
我需要设置var的值隐藏输入的值.其他选项是可以比较使用
<c:if test="....">
Run Code Online (Sandbox Code Playgroud)
我使用隐藏输入值发送的变量的值.
谢谢.
更新
我一直在尝试,但无法使它工作.
我有这个包含id和object的字段.我也有列表与对象,所以我要做的是找到与该ID相关的对象.
<input type="text" name="id1" />
Run Code Online (Sandbox Code Playgroud)
但如果我这样做:
<c:set var="dd" value="${param.id1}" />
<input type="text" value="${dd}" />
Run Code Online (Sandbox Code Playgroud)
输入文本为空,但与id1相关的文本显示850(即值为dinamic)
任何建议为什么不起作用?
更新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>
Run Code Online (Sandbox Code Playgroud)
将显示第一个条件。
如果您实际上想在后续请求中保留一些隐藏的输入元素(您的问题中并没有真正明确这一点),那么您基本上需要做的就是:
<input type="hidden" name="foo" value="${param.foo}">
Run Code Online (Sandbox Code Playgroud)
更新:根据您的更新:您还需要为输入元素指定一个名称。因此,例如
<input type="text" name="id1" value="${param.id1}" />
Run Code Online (Sandbox Code Playgroud)
通过这种方式,它request.getParameter("id1")本质上也可用${param.id1}。你现在看到了吗?
更新 2:根据您的评论:这当然与enctype="multipart/form-data". 使用这种编码,请求参数不再位于参数映射中,而是位于请求正文中,因为与二进制数据(文件上传)混合。要解释这一切将是一个很长的故事,但基本上您需要自己解析请求。如果您使用的是 Servlet 2.5 或更早版本,那么Apache Commons FileUpload在这里非常有帮助。特别阅读那里的“用户指南”和“常见问题解答”,以查看代码示例并学习如何正确使用它(也在 MSIE 中!)。您甚至可以决定将 FileUpload 抽象出来,以便您可以坚持使用HttpServletRequest#getParameter()通常${param}的方式,另请参阅这篇文章。
如果您已经使用 Servlet 3.0,那么您可以使用HttpServletRequest#getParts(). 您甚至可以将其抽象出来,以便您可以继续使用通常的HttpServletRequest#getParameter()方式${param},另请参阅这篇文章。
更新3:哦,你真的不想使用JSP 来完成所有处理。那里不是为了。是时候学习了Servlet。此外,当使用 aFilter将请求正文中的所有参数放回请求参数映射中时(如两篇文章中所述),您也不一定需要 a Servlet。