java - 如何从html输入单选中获取值并将其放入jsp java中的输入隐藏字段
问题描述
我有单选按钮的代码
<input type="radio" name="opt" id="1" value="1"/><label for="1">${dto.quesOpt1}</label>
<br/>
<input type="radio" name="opt" id="2" value="2"/><label for="2">${dto.quesOpt2}</label>
<br/>
<input type="radio" name="opt" id="3" value="3"/><label for="3">${dto.quesOpt3}</label>
<br/>
<input type="radio" name="opt" id="4" value="4"/><label for="4">${dto.quesOpt4}</label>
我想把值放在这里,这样我就可以把它传递给我的 Servlet
<form action="MainController" method="POST">
<input type="hidden" name="quesNum" value="${requestScope.QUESNUM}"/>
<input type="hidden" name="quesId" value="${dto.quesId}"/>
<input type="hidden" name="quesChoice" value="${param.opt}"/> <--------- here
<input type="hidden" name="amount" value="${requestScope.AMOUNT}"/>
<input type="hidden" name="action" value="Previous Question"/>
<input type="submit" value="Previous" <c:if test="${requestScope.QUESNUM == 0}">disabled</c:if>/>
</form>
我总是在 Servlet 中得到空值
request.getParameter("quesChoice")
我不知道如何传递价值。请指导我。谢谢你。
解决方案
您要做的是${dto.quesId}
在浏览器中执行服务器端代码(如 )。你不能这样做。
- 您尝试做的事情非常讨厌,可能不是正确的方法。您可能不需要将收音机中的值复制到表单中,因为您可以将收音机直接放在表单中。
- JSP 是一种超级古老的技术,大多数公司在几年前就已经放弃了它,而那些仍在使用它的公司计划放弃它。
- 如果你真的必须使用 JSP,如果你使用 JSTL 库,你的生活会容易得多,而且 MKYoung 有一些很棒的教程,介绍了如何处理许多旧的 java 问题,包括你现在正在努力解决的问题:https:/ /mkyong.com/spring-mvc/spring-mvc-radiobutton-and-radiobuttons-example/
- 如果您说“去他的,无论如何我都想按照我一直计划的方式对其进行编码”,您仍然需要 JavaScript 来复制您的值,因为这是处理浏览器端操作的 JavaScript。
说了这么多,这就是使用纯 JS 的方法:
<html>
<script>
function copyValue() {
let allOptions = Array.prototype.slice.call(document.getElementsByName('opt'));
let selectedOption = allOptions.filter(opt => opt.checked)[0];
let selectedOptionValue = selectedOption ? selectedOption.value : undefined;
document.getElementById('quesNum').value = selectedOptionValue;
}
</script>
<body>
<input type="radio" name="opt" id="1" value="1"/><label for="1">${dto.quesOpt1}</label>
<br/>
<input type="radio" name="opt" id="2" value="2"/><label for="2">${dto.quesOpt2}</label>
<br/>
<input type="radio" name="opt" id="3" value="3"/><label for="3">${dto.quesOpt3}</label>
<br/>
<input type="radio" name="opt" id="4" value="4"/><label for="4">${dto.quesOpt4}</label>
<input type="hidden" name="quesNum" id="quesNum" value="${requestScope.QUESNUM}"/>
<input type="button" value="Copy Value" onClick="copyValue()"/>
</body>
</html>
请注意我必须如何添加id="quesNum"
然后onClick="copyValue()"
触发动作。
如果您想使用它,这是 JSFiddle 中的示例:https ://jsfiddle.net/kgjanowski/5ymubn6v/22/
推荐阅读
- python - Why isn't keyboard inputs working when trying to use python sockets?
- python - 我无法使用特定链接打开我的页面
- asp-classic - 通过强制将特定表单数据发送到页面来复制远程站点“攻击”
- sql - 在 Ruby 中过滤数据库表,将代码迁移到 Postgres
- xml - XSLT 删除子节点并使用标点符号保留空格
- javafx - JavaFX 多折线图和系列 - 缺少曲线
- macos - 如何使用 GHCi 更改 Haskell 中的源代码?
- scala - 如何在 Mac 上的终端中运行 Scala 程序?
- python - Pytest:使用 mark.paramatrize vs fixture(params=[]) 参数化测试数据
- javascript - 使用 shouldForwardProp 时伪类不起作用 / 如何在 styled-components 的 shouldForwardProp 中使用多个过滤器