• 工作中的技术总结_ form表单使用注意事项之form触发后台提交事件 _20220127


    工作中的技术总结_ form表单使用注意事项之form触发后台提交事件 _20220127

    如无必要不要使用 form标签 来作为组件的父节点

    事件过程:

    项目使用的是 spring + jsp 的框架,根据业务需要添加了一个模块。由于项目中有既有的类似功能,选择进行迁移改写。但是 这一功能的原来是需要进行 form 表单提交的,而新加的模块只需要控件展示,不需要对 form表单进行提交,而是另外通过事件来获取并提交其中的 input 控件 value。

    由于在迁移过程中 没有注意到该细节,导致 只要 input获得焦点 并 点击 Enter键 就会触发表单事件,这时如果是 input中是 空值 就会报错 已为此响应调用 getOutputStream () ……Constructs a InvocationTargetException with a target exception. 解决了这个问题,我没有第一时间 再现 bug 详细报错情况就不展示了。

    通过将 form标签 改成 div标签 就解决了以上问题,一般情况 这个 错误是 比较难发现的,但是 项目中要求 的是 改 input 控件的值 能够 通过键盘输入 也能够通过 下拉列表选择,使用下拉列表时不会报系统错误,而使用 键盘输入时,只要点击 Enter键 就会导致系统错误,这才暴露了这个问题。

    一般,我们的使用习惯都是 输入之后 再点击 Enter键 进行确认。所以不容许以上错误现象发生

    总之,如非必要,不使用 form标签 作为 展示信息的控件的 父节点,这一点很重要。

    <!--引发错误的代码 只要将 form 替换为 div 就能解决-->
    <form class="form-inline">
    			<div class="row" style="margin-bottom:5px;">
    				<div class="col-sm-8 col-xs-6" style="margin-top: 20px; margin-left: 20px;">
    					Start Date &nbsp;
    					<div class="input-group date form_date" data-date="" data-date-format="ddMyy" data-link-field="startDateShow"
    						data-link-format="yyyy-mm-dd" id=startDateDiv>
    					<input class="form-control input-sm" id="startDate" name="startDate" size="8" type="text" value="" spellcheck="false" maxlength="9">
    					<span class="input-group-addon">
    						<span class="glyphicon glyphicon-calendar"></span>
    					</span>
    					</div>
    				</div>
    	 		</div>
    </form>
    
  • 相关阅读:
    【ZJOI 2008】 生日聚会
    BZOJ2135 刷题计划(贪心+二分)
    BZOJ2124 等差子序列(树状数组+哈希)
    BZOJ2282 SDOI2011消防/NOIP2007树网的核(二分答案+树形dp)
    BZOJ1304 CQOI2009叶子的染色(树形dp)
    BZOJ1283 序列(费用流)
    BZOJ1266 AHOI2006上学路线(最短路+最小割)
    BZOJ1041 HAOI2008圆上的整点(数论)
    BZOJ3505 CQOI2014数三角形(组合数学)
    BZOJ5206 JSOI2017原力(三元环计数)
  • 原文地址:https://www.cnblogs.com/OwlInTheOaktree/p/15850613.html
Copyright © 2020-2023  润新知