【问题标题】:How to get value from html input radio and put it in input hidden field in jsp java [duplicate]如何从html输入单选中获取值并将其放入jsp java中的输入隐藏字段[重复]
【发布时间】:2020-09-20 02:24:57
【问题描述】:

我有单选按钮的代码

<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")

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

【问题讨论】:

    标签: java html jsp servlets jstl


    【解决方案1】:

    您要做的是在浏览器中执行服务器端代码(如${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/

    【讨论】:

    • 非常感谢。我在学校学习 Java Web,这是老师教给我的。我没有意识到我正在浏览器上执行服务器端代码。再次感谢您向我展示了一些很棒的新事物。
    猜你喜欢
    • 1970-01-01
    • 2019-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 2013-11-17
    相关资源
    最近更新 更多