工作中的技术总结_ form表单的前后台交互 _20210825
工作中的技术总结_ form表单的前后台交互 _20210825
在项目经常会使用 form 表单 进行数据的 页面展示 以及数据的 提交和后台处理
1、数据是怎么从后台传递到前台的
model.addAttribute("patternFileInfoForm", patternFileInfoFormOld);
return "patternfile/addsub";
// 在这个项目中 一般是通过 model 传递到前台 前台通过路径访问 controller层方法 数据经过处理 最后将 数据对象 保存到 model的 一个命名空间里面
2、前台的获取和处理
<form class="form-horizontal"
th:action="@{/pattern-file/save}"
th:object="${patternFileInfoForm}"
id="addForm" method="post" enctype="multipart/form-data">
<table class="table table-condensed table-bordered table-striped" id="table">
<tr>
<td style="background: #000; color: #FFF" class="p-1 white-space-nowrap sticky-cell">测定器种类*</td>
<td style="background-color: #D0D0D0;">
<div style="width: 40%">
<select class="for-select2" name="equipmentType" id="equipmentType" placeholder="测定器种类的选择" style="width: 100%">
<option value=""></option>
<option th:each="equipmentType : ${equipmentTypeList}"
th:value="${equipmentType}"
th:text="${equipmentType}"
th:selected="${equipmentType}== ${patternFileInfoForm.equipmentType}">
</option>
</select>
</div>
</td>
</tr>
<tr>
<td style="background: #000; color: #FFF" class="p-1 white-space-nowrap sticky-cell">测定器*</td>
<td style="background-color: #D0D0D0;">
<div style="width: 40%">
<select class="for-select2" name="equipmentName" id="equipmentName" placeholder="测定器的选择" style="width: 100%">
<option value=""></option>
</select>
</div>
</td>
</tr>
<tr>
<td style="background: #000; color: #FFF" class="p-1 white-space-nowrap sticky-cell">模式区分*</td>
<td style="background-color: #D0D0D0;">
<div style="width: 40%">
<select class="for-select2" name="patternFileTypeName" id="patternFileTypeName" placeholder="模式区分的选择" style="width: 100%">
<option value=""></option>
</select>
</div>
</td>
</tr>
<tr>
<td style="background: #000; color: #FFF"
class="p-1 white-space-nowrap sticky-cell">模式文件*</td>
<td style="background:#D0D0D0">
<div id="patternFileUpload" class="uploadFile" data-type="single" data-code="MM060" style="width:300px;" th:with="files=*{fileName}, fieldName='fileName', tempFiles=*{patternFileNameValue}, tempFieldName='patternFileNameValue'">
<div th:replace="common/upload :: uploadFragment"></div>
</div>
</td>
</tr>
<tr>
<td style="background: #000; color: #FFF"
class="p-1 white-space-nowrap sticky-cell">评论</td>
<td style="background-color: #D0D0D0;">
<input class="form-control" id="patternFileComment" th:field="${patternFileInfoForm.patternFileComment}"></td>
</tr>
</table>
<input type="hidden" id="successMessage" th:value="${successMessage}" />
<input type="hidden" id="status" th:value="${status}" />
<input type="hidden" id="patternVersionErr" th:value="${patternVersionErr}" />
<input type="hidden" id="checkMode" name="checkMode" />
</form>
这个 form 是通过 thymeleaf 来绑定对象并进行渲染 ,其中有多个隐藏域 用于对值的提交或者一些状态的获取
3、前台获取的数据如何提交到后台
$("#updateButton").click(
function () {
var l = Ladda.create(this);
Common.showConfirm('confirm', '确认保存',
'即将保存画面中的内容。是否确认完成?', function () {
$("#patternFileComment").removeClass("is-invalid");
if ($("#patternFileComment").val().trim() == "" && $("#patternFileComment").val().length > 0) {
$("#patternFileComment").addClass("is-invalid");
Common.showConfirm('error', '出错', Common.message.COMMON044, null, null);
return;
}
if (patternFileCommentOld !== null && patternFileCommentOld !== $("#patternFileComment").val()) {
$("#historyPatternFileCommentValue").val(patternFileCommentOld)
}
l.start();
$("#checkMode").val("check");
$("#updateForm").submit();
}, null);
})
这是一段 js 代码主要是点击按钮进行提交的操作 $("#updateForm").submit(); 就是一个提交函数,将 表单信息提交到后台 后台controller通过 指定类型对象的参数进行接收,以及验证等等操作:
4、后台的获取
@RequestMapping(value = {"/update"}, method = {RequestMethod.POST})
public String update(
@Validated(value = PatternFileInfoForm.Update.class) @ModelAttribute PatternFileInfoForm patternFileInfoForm,
BindingResult bindingResult,
RedirectAttributes redirectAttributes,
Model model,
Principal principal,
HttpServletRequest request)
@ModelAttribute PatternFileInfoForm patternFileInfoForm 就是接收参数 这里定义了类型 和 参数名 @ModelAttribute (包路径:org.springframework.web.bind.annotation.ModelAttribute;) 是接收model参数的 注解
@Validated(value = PatternFileInfoForm.Update.class) @Validated (包路径:org.springframework.validation.annotation.Validated;)是用于数据验证的,参数是验证的规则 这里是一个在数据进行更新时使用的验证规则,可以检查数据在更新时 必填项是否填写
工作中的技术总结_ form表单的前后台交互 _20210825的更多相关文章
- SpringMVC中使用bean来接收form表单提交的参数时的注意点
这是前辈们对于SpringMVC接收表单数据记录下来的总结经验: SpringMVC接收页面表单参数 springmvc请求参数获取的几种方法 下面是我自己在使用时发现的,前辈们没有记录的细节和注意点 ...
- Django中三种方式写form表单
除了在html中自己手写form表单外,django还可以通过 继承django.forms.Form 或django.forms.ModelForm两个类来自动生成form表单,下面依次利用三种方式 ...
- JavaScript---网络编程(12)--DHTML技术演示(5)-form表单验证技术(正则)
这里不进行很复杂的后台验证以及JavaScript的正则表达式,只是简单的介绍下这个技术,简单的后台接收与跳转,大概了解怎么验证的就可以.具体的技术,我后面还会继续写博客的.本人也还在学习中. 表单验 ...
- springMVC+thymeleaf form表单提交前后台数据传递
后端: @RequestMapping(value = "/add", method=RequestMethod.POST) public String save(@ModelAt ...
- 【django之form表单】
一.构建一个表单 假设你想在你的网站上创建一个简单的表单,以获得用户的名字.你需要类似这样的模板: <form action="/your-name/" method=&qu ...
- 直接提交一个form表单后台返回一个新页面通过target属性可以放到iframe当中
问题描述: 我想提交一个form表单后台直接返回一个新页面,但是当前页面还不想被替换掉: 解决方案: 在页面中添加一个iframe将form表单的target属性设置为iframe的id这样的话返回的 ...
- 使用隐藏form表单下载文件,解决url方式下载,由于环境问题而限制url长度,满足不了所有的需求!
一 对于某些环境导出是直接用wiondow.href=url直接导出下载,有些业务需求,如员工档案等字段比较多的时候,全选导出就会引发异常,由于Nginx转发长度限制的问题, 如果运维不愿意改变环境, ...
- form表单上传文件
一.formData()直接获取form表单数据 例子:获取form表单的id给formData(),然后传给后台. 要求: 传入值的name值必须与后台接受的name相对应. form表单不能嵌套, ...
- Form表单元素
Form表单元素 action method input: name value type: text password button radio checkbox file submit reset ...
- Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查
本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...
随机推荐
- Kotlin 布尔值教程:深入理解与应用示例
Kotlin 布尔值 在编程中,您经常需要一种只能有两个值的数据类型,例如: 是 / 否 开 / 关 真 / 假 为此,Kotlin 有一种布尔数据类型,可以取 true 或 false 值. 布尔值 ...
- 02-canvas注意点
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- 【A GUIDE TO CRC ERROR DETECTION ALGORITHM】 (译文1)
A GUIDE TO CRC ERROR DETECTION ALGORITHM (译文) <A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHM& ...
- zabbix基本概念
Zabbix是一个企业级的.开源的.分布式监控解决方案. Zabbix可以监控网络和服务的监控状况. Zabbix利用灵活的告警机制,允许用户对事件发送基于Email的告警. 这样可以保证快速的对问题 ...
- 守护您的数字资产:API安全的最佳实践
在数字化时代,API(应用程序编程接口)已成为企业与用户.服务与服务之间沟通的桥梁.然而,随着API的广泛应用,安全问题也日益凸显.本文将探讨API安全的重要性,并提供一些实用的安全措施,帮助您保 ...
- DataV兼容vue3的方法
发现问题 在使用vue开发大屏时,发现了一个很好用的可视化组件库DataV,不是阿里那个DataV哈,用vue2开发时都一切顺利,直到有一天升级项目到vue3时,发现一堆报错,后面查了下,好像是Dat ...
- chroot 整理
chroot 是什么? 就是change root directory ,比如默认是 /, 可以用这个chroot 把 / 换成其他指定的目录 chroot 干什么的? 增加了系统的安全性,限制了用户 ...
- 全面升级,票据识别新纪元:合合信息TextIn多票识别2.0
票据识别 - 自动化业务的守门员 发票.票据识别,是OCR技术和RPA.CMS系统结合的一个典型场景,从覆盖率.覆盖面的角度来说,应该也是结合得最成功的场景之一. 旧瓶装新酒,已经成熟的产品何苦费 ...
- 亮相CCIG2024,合合信息文档解析技术破解大模型语料“饥荒”难题
近日,2024中国图象图形大会在古都西安盛大开幕.本届大会由中国图象图形学学会主办,空军军医大学.西安交通大学.西北工业大学承办,通过二十多场论坛.百余项成果,集中展示了生成式人工智能.大模型 ...
- 应聘软件测试 HR 会问到哪些问题?收藏这一篇就够了!
1.你还有收到其他offer吗? 其实hr问你offer情况,是对你感兴趣,想要进一步了解你,看下你的市场竞争力. 但注意不要太坦诚的说:我还没有offer或者收到两个offer还想对比对比:也不要撒 ...