文本域、bootstrap-table显示以及MySQL三者间的换行符问题
首先,今天在做项目的时候遇到的一个问题,如何实现文本输入换行以及在前台Bootstrap-table中显示也能够换行。
也许你马上就会想到说,用富文本编辑器,然而我们需要实现的只是文本输入以及换行功能,就没必要说大费周章地去使用富文本编辑器了。
接下来说重点,经过一段时间的思考和探索,发现了一个规律。我们传递数据其实是这样的
写入:文本域—>Form表单提交到后台—>Spring自动装配—>通过Hibernate将数据写进MySQL数据库
显示到前台:Hibernate将数据从MySQL数据库查询取出—>Controller取得数据对象—>转换成json格式返回给前台bootstrap-table进行显示
虽然说思路很清晰,但是不同语言不同环境对换行符的转化却是不一样。数据格式转化的方式有多种,在这里我就讲一下自己所采用的思路方法。
- 我们还是从文本域这里开始,首先我们在文本域上输入一段文字并且进行换行。
- 接着将表单提交。此时文本域中的换行符为(\r\n),我们将这段文字存进数据库后,数据库是不显示换行符的,但是看得出有换行。此时我们完成了存储,但是,将数据显示到前台又是一种什么情况?
- 如果我们不对换行符进行处理的话,前台是无法进行换行的。因为Html的换行符是<br>。这时候我们使用js来进行格式转换。
formatter:function(value){ if(typeof(value)!="undefined"){ var k=value;
value=k.replace(/\r\n/ig,"<br>");
} return value;
} - formatter是bootstrap-table中的一个格式化数据的属性,我们将从后台获取到的数据value进行replace,将\r\n转换为<br>标签。这时我们的bootstrap-table中的数据就实现了换行。
- 由于我们的表单有编辑这一功能,点击编辑之后,前台显示的数据就会填充到另一个页面的文本输入框中。由于是使用视图转发,这个时候我们需要经过后台。
@RequestMapping(value="/form")
public String form(Model model,Insurance insurance){
String string =insurance.getProcess();
System.out.println(string);
String newo = string.replaceAll("\r\n", "<br>");
insurance.setProcess(newo);
System.out.println(newo);
model.addAttribute("model", insurance);
List<Item> Items =ItemService.fingItem();
model.addAttribute("model2",Items);
return "/admin/insuranceform";
}
} - 在后台可以看到,我们的insurance通过自动装配已经获取到一次查询的值(从数据库查询得到的,因此换行符仍旧是"\r\n"),由于js无法对数据库中“\r\n”这样的字段进行解析,F12查看代码会直接显示换行并且会报错。所以我们要把这个转换成一个标记,方便我们接下来进行转化,这里我采用的同样是<br>,也可以是其他的,只是作为标记用。
$(document).ready(function() {
var k="${model.process}";
k=k.replace(/<br>/ig,"\r\n");
$("#process").val(k);
});
<textarea name="process" id="process" rows="5" style="resize : none;"></textarea>
最后,通过对刚才的标记<br>进行替换,文本域又重新获得了“\r\n”,这样的换行符,回到了我们的出发点。
通过这次的学习,对这一部分的知识也有更清晰的认识,如果大家还有什么更好地思路,欢迎提出来交流一下。
文本域、bootstrap-table显示以及MySQL三者间的换行符问题的更多相关文章
- BootStrap Table显示行号,并且分页后依然递增
bootStrap table 此处使用的是V1.9.0.在网上百度的方法是: { title: '序号', field: '', formatter: function (value, row, i ...
- bootstrap table 显示连续序号,分页有效
参考:http://blog.csdn.net/nazhidao/article/details/51647799 第一种,通过index+1可以简单实现,但是,翻页后又重新从第一个开始 { fiel ...
- ASP.NET弹出显示ex.Message异常信息 存在换行符和回车符处理办法。
1.把ex.Message换成任意字符串,检验在catch语句块中可以用Response.Write方法显示对话框.结果显示成功,说明问题就出在ex.Message上. 2.在程序中下断点,可以看到e ...
- MYSQL表记录字段换行符回车符处理
), ), ''); CHAR(10): 换行符 CHAR(13): 回车符
- MySQL 记录中包含换行符
换行符: \r\n \r CHAR(10) 处理方法: REPLACE(str,from_str,to_str); 如:REPLACE('aaa\nbbb','\n','');
- 关于MYSQL表记录字段换行符回车符处理
http://hualong.iteye.com/blog/1933023 今天遇到一个非常奇葩的问题,数据库表中明明有值却查询不不出来,而然一次从单元格中复制到sql中,发现右侧单引号换行了,我初步 ...
- HTML中让表单input等文本框为只读不可编辑但可以获取value值的方法;让文本域前面的内容显示在左上角,居中
HTML中让表单input等文本框为只读不可编辑的方法 有时候,我们希望表单中的文本框是只读的,让用户不能修改其中的信息,如使input text的内容,中国两个字不可以修改 有时候,我们希望 ...
- bootstrap table 服务器端分页--ashx+ajax
1.准备静态页面 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-T ...
- Bootstrap系列 -- 16. 文本域textarea
文本域和原始使用方法一样,设置rows可定义其高度,设置cols可以设置其宽度.但如果textarea元素中添加了类名“form-control”类名,则无需设置cols属性.因为Bootstrap框 ...
随机推荐
- MongoDB数据库的安装、配置和使用
1.下载安装包 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.7.tgz 2.解压安装包 tar -zxf mo ...
- JS或jQuery实现一组复选框的全选和取消全选?
//1.JS方式实现:checkbox 全选/取消全选 var isCheckAll = false; function swapCheck() { if (isCheckAll) { ...
- web前端面试官挖的那些坑(js)
题目1: function Foo() { getName = function () { alert (1); }; return this; } Foo.getName = function () ...
- 关于安全性问题:(XSS,csrf,cors,jsonp,同源策略)
关于安全性问题:(XSS,csrf,cors,jsonp,同源策略) Ajax 是无需刷新页面就能从服务器获取数据的一种方法.它的核心对象是XHR,同源策略是ajax的一种约束,它为通信设置了相同的协 ...
- 扩展jquery.validate自定义验证,自定义提示,本地化
<!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...
- 使用 Proxy + Promise 实现 依赖收集
(深入浅出Vue基于“依赖收集”的响应式原理) ,这篇文章讲的是通过一个通俗易懂例子,介绍了 如何用Object.defineProperty 实现的“依赖收集”的原理.Object.definePr ...
- STM32F10XX存储器细节
>> STM32F10XX系统架构 >> 程序存储器.数据存储器.寄存器和输入输出端口被组织在同一个4GB的线性地址空间内. >> 数据字节以小端格式存放在存储 ...
- Java常用类(一)String类详解
前言 在我们开发中经常会用到很多的常用的工具类,这里做一个总结.他们有很多的方法都是我们经常要用到的.所以我们一定要把它好好的掌握起来! 一.String简介 1.1.String(字符串常量)概述 ...
- JAVA基础知识总结:十
一.抽象类 1.定义 当多个类中出现相同功能,但是功能主体是不同的,这是可以进行向上抽取的,只抽取功能的定义部分,使用抽象类实现 抽象类的存在就是为了被继承 2.使用 abstract 3.抽象类的特 ...
- Python元祖
本篇主要介绍另一种有序列表叫元祖:tuple.更多内容请参考:python学习指南 元祖是什么 tuple和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字 >&g ...