工作中的技术总结_ 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,创 ...
随机推荐
- .NET电子邮件高效处理解决方案
前言 在日常软件开发中,电子邮件处理是一个不可或缺的功能,无论是用户注册验证.通知推送还是日常的业务沟通,都离不开电子邮件的支持.今天大姚给大家分享2款.NET开源.高效.强大的.NET电子邮件处理库 ...
- ibatis执行存储过程,java.lang.ArrayIndexOutOfBoundsException: 0
在项目开发中遇到一个问题,ibatis执行存储过程时报错 <procedure id="insertStatisticsResult_settle" parameterCla ...
- WinUI 3学习笔记(1)—— First Desktop App
随着Visual Studio 2019 16.10版本的正式发布,创建WinUI 3的APP对我们来说,已不存在任何的难度.本篇我们就试着来一探究竟,看看WinUI 3 APP到底是个啥玩意,能不能 ...
- Ubuntu 16.04 部署Mariadb
默认上MariaDB的包并没有在Ubuntu仓库中.要安装MariaDB,我们要设置MariaDB仓库. sudo apt-get install software-properties-common ...
- 检测 NAT 类型
使用 pystun3 pystun3 是一个用于获取 NAT 类型和外部 IP 的 Python STUN 客户端 安装: pip install pystun3 使用: pystun3 结果: NA ...
- SpringBoot启动项目报错:java.lang.UnsatisfiedLinkError: D:\files\software\jdk-15.0.1\jdk-17.0.3.1\bin\tcnative-1.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
目录 问题描述 解决方法: 问题描述 在运行向的时候出现报错: java.lang.UnsatisfiedLinkError: D:\files\software\jdk-15.0.1\jdk-17. ...
- SpringMVC:域对象共享数据
SpringMVC:域对象共享数据 使用ServletAPI向request域对象共享数据 @RequestMapping("/testServletAPI") public St ...
- A4纸尺寸
A4纸尺寸 A4纸尺寸:210×297: A3纸尺寸:297×420: A2纸尺寸:420×594: A1纸尺寸:594×841: A0纸尺寸:841×1189: 备注:长(mm)×宽(mm) 单位: ...
- RxJS 系列 – 目录
请按顺序阅读 概念篇 Observable & Creation Operators Subject Observable to Subject (Hot, Cold, Warm, conne ...
- Angular – CLI
前言 一年半没有写 Angular 了. 现在又要开始写了. 复习过程中也顺便整理一下笔记呗. 介绍 CLI 是 Angular 的辅助工具. 输入一些 command 它会帮你 create 一些有 ...