首先,今天在做项目的时候遇到的一个问题,如何实现文本输入换行以及在前台Bootstrap-table中显示也能够换行。

也许你马上就会想到说,用富文本编辑器,然而我们需要实现的只是文本输入以及换行功能,就没必要说大费周章地去使用富文本编辑器了。

接下来说重点,经过一段时间的思考和探索,发现了一个规律。我们传递数据其实是这样的

写入:文本域—>Form表单提交到后台—>Spring自动装配—>通过Hibernate将数据写进MySQL数据库

显示到前台:Hibernate将数据从MySQL数据库查询取出—>Controller取得数据对象—>转换成json格式返回给前台bootstrap-table进行显示

虽然说思路很清晰,但是不同语言不同环境对换行符的转化却是不一样。数据格式转化的方式有多种,在这里我就讲一下自己所采用的思路方法。

  1. 我们还是从文本域这里开始,首先我们在文本域上输入一段文字并且进行换行。
  2. 接着将表单提交。此时文本域中的换行符为(\r\n),我们将这段文字存进数据库后,数据库是不显示换行符的,但是看得出有换行。此时我们完成了存储,但是,将数据显示到前台又是一种什么情况?
  3. 如果我们不对换行符进行处理的话,前台是无法进行换行的。因为Html的换行符是<br>。这时候我们使用js来进行格式转换。
    formatter:function(value){
    
                     if(typeof(value)!="undefined"){
    
                        var k=value;
    value=k.replace(/\r\n/ig,"<br>");
    } return value;
    }
  4. formatter是bootstrap-table中的一个格式化数据的属性,我们将从后台获取到的数据value进行replace,将\r\n转换为<br>标签。这时我们的bootstrap-table中的数据就实现了换行。
  5. 由于我们的表单有编辑这一功能,点击编辑之后,前台显示的数据就会填充到另一个页面的文本输入框中。由于是使用视图转发,这个时候我们需要经过后台。
    @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";
    }
    }
  6. 在后台可以看到,我们的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三者间的换行符问题的更多相关文章

  1. BootStrap Table显示行号,并且分页后依然递增

    bootStrap table 此处使用的是V1.9.0.在网上百度的方法是: { title: '序号', field: '', formatter: function (value, row, i ...

  2. bootstrap table 显示连续序号,分页有效

    参考:http://blog.csdn.net/nazhidao/article/details/51647799 第一种,通过index+1可以简单实现,但是,翻页后又重新从第一个开始 { fiel ...

  3. ASP.NET弹出显示ex.Message异常信息 存在换行符和回车符处理办法。

    1.把ex.Message换成任意字符串,检验在catch语句块中可以用Response.Write方法显示对话框.结果显示成功,说明问题就出在ex.Message上. 2.在程序中下断点,可以看到e ...

  4. MYSQL表记录字段换行符回车符处理

    ), ), '');  CHAR(10): 换行符 CHAR(13): 回车符

  5. MySQL 记录中包含换行符

    换行符: \r\n \r CHAR(10) 处理方法: REPLACE(str,from_str,to_str); 如:REPLACE('aaa\nbbb','\n','');

  6. 关于MYSQL表记录字段换行符回车符处理

    http://hualong.iteye.com/blog/1933023 今天遇到一个非常奇葩的问题,数据库表中明明有值却查询不不出来,而然一次从单元格中复制到sql中,发现右侧单引号换行了,我初步 ...

  7. HTML中让表单input等文本框为只读不可编辑但可以获取value值的方法;让文本域前面的内容显示在左上角,居中

      HTML中让表单input等文本框为只读不可编辑的方法 有时候,我们希望表单中的文本框是只读的,让用户不能修改其中的信息,如使input text的内容,中国两个字不可以修改   有时候,我们希望 ...

  8. bootstrap table 服务器端分页--ashx+ajax

    1.准备静态页面 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-T ...

  9. Bootstrap系列 -- 16. 文本域textarea

    文本域和原始使用方法一样,设置rows可定义其高度,设置cols可以设置其宽度.但如果textarea元素中添加了类名“form-control”类名,则无需设置cols属性.因为Bootstrap框 ...

随机推荐

  1. 550 Create directory operation failed

    往Linux系统中上传文件时候,我们经常会使用FTP连接Linux,也经常会使用mkdir命令来创建目录.最近发现用mkdir创建目录时提示550 Create directory operation ...

  2. Ubuntu16.04 install jdk-8u144-linux-x64.tar.gz

    打开终端: Ctrl+Alt+T 下载jdk: wget http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b ...

  3. Angular - 预加载 Angular 模块

    Angular - 预加载延迟模块 在使用路由延迟加载中,我们介绍了如何使用模块来拆分应用,在访问到这个模块的时候, Angular 加载这个模块.但这需要一点时间.在用户第一次点击的时候,会有一点延 ...

  4. yii2-swiftmailer入门

    1. 安装 用yii 2.0框架,默认会有这个扩展 composer require --prefer-dist yiisoft/yii2-swiftmailer 修改composer.json,re ...

  5. Python 基础系列一:初识python

    为什么是Python而不是其他语言? C 和 Python.Java.C#等 C语言: 代码编译得到 机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工作. 其他语言: 代码编译得到 字节码 ...

  6. javascript中call()、apply()、bind()的用法终于理解

    其实是一个很简单的东西,认真看十分钟就从一脸懵B 到完全 理解! 先看明白下面: 例1 obj.objAge;  //17 obj.myFun()  //小张年龄undefined 例2 shows( ...

  7. 【MVC】会员注册/登录,普通验证,会员名是否注册Ajax验证以及会员邮件验证实现原理

    using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentM ...

  8. 面试题:Two Sum

    Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...

  9. eclipse环境下,java操作MySQL的简单演示

    首先先通过power shell 进入MySQL 查看现在数据库的状态(博主是win10系统) 右键开始,选择Windows powershell ,输入MySQL -u用户名 -p密码 选择数据库( ...

  10. .NET接入接口/请求服务器

    之前只调用过自己写的接口,这个是调用外部接口 一.创建方法链接接口 , string method = "Get", string token = null) { if (stri ...