首页 > 解决方案 > 如何从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")

我不知道如何传递价值。请指导我。谢谢你。

标签: javahtmljspservletsjstl

解决方案


您要做的是${dto.quesId}在浏览器中执行服务器端代码(如 )。你不能这样做。

  1. 您尝试做的事情非常讨厌,可能不是正确的方法。您可能不需要将收音机中的值复制到表单中,因为您可以将收音机直接放在表单中。
  2. JSP 是一种超级古老的技术,大多数公司在几年前就已经放弃了它,而那些仍在使用它的公司计划放弃它。
  3. 如果你真的必须使用 JSP,如果你使用 JSTL 库,你的生活会容易得多,而且 MKYoung 有一些很棒的教程,介绍了如何处理许多旧的 java 问题,包括你现在正在努力解决的问题:https:/ /mkyong.com/spring-mvc/spring-mvc-radiobutton-and-radiobuttons-example/
  4. 如果您说“去他的,无论如何我都想按照我一直计划的方式对其进行编码”,您仍然需要 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/


推荐阅读