gpt4 book ai didi

java - JSP:一些表单字段是稳定的,而另一些则不稳定!

转载 作者:行者123 更新时间:2023-11-30 05:04:07 25 4
gpt4 key购买 nike

我想在选中复选框时启用输入字段。另外,我想对要填写的文本字段进行服务器端验证,如果选中该复选框,我面临的问题是,当我检查多个并提交表单的字段值为空,然后在 servlet 中进行验证并将结果返回给用户以填充输入,其中一个检查字段被检查,另一个则没有,即使我使用 param 两者都提交稳定,我不知道是什么原因!

这是 HTML 代码

 <div class="groupElement">

<input type="checkbox" name="communicationWay" id="communicationWay2" value="emailOption" ${param.communicationWay == 'emailOption'?'checked':'' } onchange="chgtx('email','communicationWay2')"/>
<label>Email</label>


<input class="inpClass" id="email" type="text" name="emailComm" value="${param.emailComm}" disabled/>

</div>

<div class="groupElement">

<input type ="checkbox" name="communicationWay" id="communicationWay" value="cellPhoneOption" ${param.communicationWay == 'cellPhoneOption'?'checked':''} onchange="chgtx('cellPhone','communicationWay')" />
<label> Cell phone number</label>

<input class="inpClass" id="cellPhone" type ="text" name="cellPhoneNoComm" value="${param.cellPhoneNoComm}" disabled />

</div>

这是在启用和禁用输入字段之间触发的 java 脚本函数

 function chgtx(field, checkbox) {

var myField = document.getElementById(field);
var checkBtton = document.getElementById(checkbox);
myField.disabled= !checkBtton.checked;

}

最佳答案

您的复选框元素具有相同的名称。所以在服务器端你必须使用request.getParameterValues()获取所有检查的值。

String[] communicationWays = request.getParameterValues("communicationWay");
// ...

当您使用request.getParameter()时,如${param}执行时,只会返回一个值,即该组的第一个值。您可以使用${paramValues}获取 EL 中的所有值。

但是,使用${paramValues}在 EL 中设置checked状态并不完全是微不足道的。有两种方法可以解决这个问题:

  1. 创建一个自定义 EL 函数,执行类似的操作

    ${util:contains(paramValues.communicationWays, 'emailOption') ? 'checked' : ''}
    ${util:contains(paramValues.communicationWays, 'phoneOption') ? 'checked' : ''}

    public static boolean contains(Object[] array, Object value) {
    Arrays.sort(array);
    return Arrays.binarySearch(array, value) > -1;
    }
  2. 创建 Map<String, Boolean>在 servlet 中并在 EL 中使用它。

    Map<String, Boolean> communicationWays = new HashMap<String, Boolean>();
    request.setAttribute("communicationWays", communicationWays);

    for (String communicationWay : request.getParameterValues("communicationWay")) {
    communicationWays.put(communicationWay, true);
    }

    ${communicationWays.emailOption ? 'checked' : ''}
    ${communicationWays.phoneOption ? 'checked' : ''}

关于java - JSP:一些表单字段是稳定的,而另一些则不稳定!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5695765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com