工作中的技术总结_ 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,创 ...
随机推荐
- 读论文《IMPALA: Scalable Distributed Deep-RL with Importance Weighted Actor-Learner Architectures》——(续)实验部分
论文地址: https://arxiv.org/pdf/1802.01561v2.pdf 论文<IMPALA: Scalable Distributed Deep-RL with Importa ...
- java多线程-补充-面试
1.背景 在这个课程之前我们已经讲了2个关于多线程的课程 一个是主要是关于多线程基础的: 另一个主要是关于JUC的: 今天我们对之前课程中没有讲到的或者重要的或者是童鞋们反馈的技术点做一个补充讲解 当 ...
- [USACO22FEB] Paint by Rectangles P 题解
前言 没用线段树的小常数.小短码. 题目链接:洛谷. 题意简述 给出 \(n\) 个平行于坐标轴的矩形,各边所在直线互不重合,钦定最外面为白色,对这个平面图黑白染色,分别求黑色块数和白色块数. 题目分 ...
- # Apache SeaTunnel 究竟是什么?
作者 | Shawn Gordon 翻译 | Debra Chen 原文链接 | What the Heck is Apache SeaTunnel? 我在2023年初开始注意到Apache SeaT ...
- SMU Summer 2023 Contest Round 13
SMU Summer 2023 Contest Round 13 A. Review Site 我们总是可以把差评放到另一个服务器,好评和中立放另一个,这样最多投票数就是好评与中立数 #include ...
- csv导入导出组件jcsv
jcsv 介绍 jcsv一个简单的.轻量级的csv导入.导出库,相对于opencsv与javacsv,jcsv侧重于导入导出,包括导入校验.导出模板等. 源代码地址:https://gitee.com ...
- 如何查看mongodb的索引命中率
如何查看mongodb的索引命中率 一.背景 现在mongodb使用率很高,经常会遇到查询慢时,就会创建索引,而有时候索引命中率又不高,下面来介绍下测试环境下如何查看索引命中率 二.方案 1.首先查看 ...
- IE、Chrome、Firefox修改http header信息
在测试系统交互时,可能会碰到需要修改header信息的要求,下面介绍下如何在IE.Chrome.Firefox修改http header信息. 1.IE(fiddler) >在IE下修改head ...
- 线性dp:编辑距离
编辑距离 本题与力扣72.编辑距离题意一样,阅读完本文可以尝试leetcode72. 力扣题目链接 题目叙述 输入两个字符串a,b.输出从字符串a修改到字符串b时的编辑距离 输入 NOTV LOVER ...
- CSS学习(四)值和单位
一.关键字.字符串和其它文本值 关键字:与其它编程语言一样,是代表特定含义的一个单词( 接收关键字的属性,所取的关键字必须在那个属性允许使用的关键字范围之内 ) 字符串:前后引号要保持一致( 可以是单 ...