SpringBoot+thymeleaf+antd vue 学习记录(二)

通过请求后台来获取列表和操作,需要引入axios包

一、获取列表

1、引入axios包
<script type="text/javascript" th:src="@{/js/vue/axios.min.js}"></script>
2、设置请求路径
const queryData = params => {
    return axios.get('http://127.0.0.1:9081/xx/vue/list', { params: params });
};
3、设置分页

将data初始化为[],等请求之后再赋值

   data() {
        return {
            columns : columns,
            data : [],
            pagination : {
                current: 1, 
                pageSize: 30, //默认每页30条数据
                showSizeChanger: true,
                total: this.total,
                pageSizeOptions: ['5', '10', '20', '30', '40', '100'],
                onShowSizeChange: this.pageSizeChange, //每页数量变化后重新请求列表
                onChange: this.pageChange //页码改变时重新请求列表
            },
            collapsed : false,
            addShow: false,
        }
    }
4、增加查询方法
methods: {
        ...
        pageSizeChange(val, pageNum) {
            this.loading = true
            this.pagination.pageSize = pageNum
            this.pagination.current = 1
            var params = {
               rows: this.pagination.pageSize,
               page: this.pagination.current,
            }
            this.fetch(params) //获取列表数据
        },
        pageChange(page, val) {
            this.loading = true
            this.pagination.current = page
            var params = {
                rows: this.pagination.pageSize,
                page: this.pagination.current,
            }
            this.fetch(params) //获取列表数据

        },
        fetch(params = {}) {
            this.loading = true;
            queryData({
                ...params,
            }).then(({ data }) => {
              const pagination = { ...this.pagination };
              this.loading = false;
              // 根据自己的数据格式进行调整
              var result = data.data;
              pagination.total = result.total;
              this.total = result.total;
              this.data = result.rows;
              this.pagination = pagination;
            });
          },
    },
    mounted() {
        this.fetch();
    }
5、格式化显示字段
 var columns = [ {
        customRender: (text, record, index) => index + 1,//序号
        width : 20,
  },{
      key : 'province',
      dataIndex: 'province',
      title : '省市区',
      width : 200,
      customRender: (text, row, index) => {  //可以直接在这里写标签、样式等
          return row.province + " " + row.city + row.county;
      }
  },  {
      title : 'Action',
      key : 'action',
      width : 130,
      fixed : 'right',
      scopedSlots : { //可以用template来写需要的样式和标签
          customRender : 'action', 
      },
  } ];
6、页面如图:

在这里插入图片描述

二、添加

1、form表单代码

之前用的随便找的示例,这次调整了一下

  <template id="vue-add"> 
   <a-modal :width="modalWidth" title="新增字典" :confimLoading="loading" v-model="show" @ok="handleOk"
           @cancel="handleCancel">
    <a-form :form="form" :label-col="{ span: 5 }" :wrapper-col="{ span: 12 }" > 
       <a-form-item label="项目编号"> 
           <a-input v-decorator="['projectNo', { rules: [{ required: true, message: '项目编号不能为空!' }] }]" /> 
       </a-form-item> 
       <a-form-item label="项目名称"> 
           <a-input v-decorator="['projectName', { rules: [{ required: true, message: '项目名称不能为空!' }] }]" /> 
       </a-form-item> 
       <a-form-item label="状态"> 
           <a-select v-decorator="['state',{ rules: [{ required: true, message: '请选择项目状态!' }] },]" >
             <a-select-option value="0"> 开始 </a-select-option> 
             <a-select-option value="1"> 暂停 </a-select-option> 
             <a-select-option value="2"> 结束 </a-select-option> 
             <a-select-option value="3"> 其他 </a-select-option> 
           </a-select> 
       </a-form-item>
    </a-form-item>
    </a-form>
    </a-modal>
  </template>
2、设置请求url
const addDict = params => {
      return axios.post('http://127.0.0.1:9081/wangr/vue/create', params);
};
3、提交表单

这里重新写一下handleOk方法就可以了

handleOk() {
    //这行代码是因为我下面直接用this.$message.success()和this.$message.error的时候,只有上面一个生效,下面就会报错
    //暂时没找到原因,有知道的小伙伴可以告诉我一下,感谢
    const that = this;
    this.form.validateFields(err => {
        if (!err) {
            this.loading = true;
             addDict(this.form.getFieldsValue()).then(res => {
                  // 这里按照自己的返回格式来写
                  that.$message.success(res.data.msg);
                   this.closeModal(false);
                   // 应该要刷新一下列表,暂时还没做,后续更新
              }).catch(function (err) {
                   // 这里可以打印一下看看是什么格式,按你自己的格式来
                   that.$message.error(err.response.data.msg);
              }).finally(() => {
                   this.loading = false;
              });
         }
     });
     setTimeout(() => {
         this.$nextTick(() => {
              this.loading = false;
          })
      }, 1000);
 }
4、结果截图

在这里插入图片描述

三、删除

1、设置请求url
const deleteRow = params => {
    return axios.post('http://127.0.0.1:9081/xx/vue/delete', {id: params});
};
2、传参

我是打算用每行的id作为参数来删除,所以调整一下删除按钮

<a-button type="danger" icon="delete" @click="handleDel(record.id)"></a-button> 
3、提交删除

同样的,改一下handleDel方法就可以了

handleDel(id) {
    //这里跟添加的问题一样,原因未知
    const that = this;
    this.$confirm({
        title: '确定要删除这条数据吗?',
        okText: 'Yes',
        okType: 'danger',
        cancelText: 'No',
        onOk() {
            deleteRow(id).then(res => {
                if (res.status == 200) {
                    that.$message.success('删除成功');
                    // 刷新列表功能后续再加
                } else {
                    that.$message.error(res.data.msg);
                }
            }).catch(function (err) {
                this.$message.error(err.response.data.msg);
            }).finally(() => {
                this.loading = false;
            });
         },
         onCancel() {
             console.log('Cancel');
         },
     });
}

==============
暂时先到这里,未完待续…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: springboot+thymeleaf项目是一种基于Java语言开发的Web应用程序。它采用了Spring Boot框架和Thymeleaf模板引擎,可以快速地搭建一个高效、可靠、易于维护的Web应用程序。该项目具有以下特点: 1. 简单易用:Spring Boot框架提供了一系列的自动化配置,使得开发者可以快速地搭建一个Web应用程序,而不需要过多的配置。 2. 高效可靠:Spring Boot框架采用了一系列的优化措施,使得应用程序具有高效、可靠的性能。 3. 易于维护:Thymeleaf模板引擎提供了一种简单、易于维护的模板语言,使得开发者可以快速地开发出具有良好可读性的Web应用程序。 总之,springboot+thymeleaf项目是一种非常优秀的Web应用程序开发框架,可以帮助开发者快速地开发出高效、可靠、易于维护的Web应用程序。 ### 回答2: Spring Boot是一个基于Spring框架的快速开发框架,这个框架的优点在于其简单易用,能够快速搭建一个Java Web应用程序,无需进行复杂的配置和繁琐的XML文件编写。而Thymeleaf则是一种Web和HTML的模板引擎,可以方便地处理文本、链接和表单等元素,支持多重继承和页面片段的复用等特性。 Spring BootThymeleaf的结合,可以帮助开发人员更加简便地搭建Web应用程序。在使用Spring Boot进行项目开发时,可以使用Thymeleaf来完成Web开发的视图层,进行模版板的渲染和数据绑定。这样就可以很直接地将数据通过模板引擎展现出来,且更加方便。 在一个Spring Boot Thymeleaf项目的构建中,需要进行如下步骤: 1. 首先,引入Spring BootThymeleaf的依赖以及其他必要的依赖,例如web和mybatis等相关组件。 2. 创建一个Controller类,并使用@Controller注解将类标记为Controller,编写具体的Action方法,这些方法可以用@RequestMapping或@GetMapping等注解来定义处理请求的URL路径和请求类型等相关信息。 3. 创建一个Model类,用于封装需要传输到前端的数据和相关操作等。 4. 在Controller内部设置Model变量并将相关数据注入Model,然后将需要展现的数据作为参数传递给Thymeleaf进行渲染,最后将渲染完成后的结果返回给前端页面展现。 5. 编写HTML页面,使用Thymeleaf标签来渲染动态数据。 需要注意的是,在进行Thymeleaf模板的渲染时,需要遵守一定的规范,例如页面中的数据变量名称需与Model中的属性名称一致,引入Thymeleaf命名空间等等。 总之,Spring BootThymeleaf结合使用可以帮助开发人员快速地完成Web开发,整个过程简单而且高效。使用Thymeleaf能够降低模版制作的门槛,进一步提高开发效率,并且能够提供丰富的模版处理标签,使得页面制作更加灵活。 ### 回答3: 近年来,使用SpringBootThymeleaf进行Web开发已经成为越来越多的开发者选择的方案。SpringBoot是一个基于Spring框架的快速Web应用开发框架,而Thymeleaf是一种基于HTML的模板引擎,其中需要了解的内容包括以下几点: 首先,SpringBoot框架的优点是非常明显的。它提供了很多便于使用的方法,例如自动装配,以及基于配置的许多默认值。这使得开发者可以花更少的时间和精力来开发项目,将重点放在业务逻辑和功能实现上。 其次,Thymeleaf是一种非常强大和灵活的模板引擎,其语法简单易懂,而且支持HTML5标准。它还提供了一些样式和布局的工具,以及易于使用的表达式和标签,使得Web页面开发更加容易。 当然,SpringBoot集成Thymeleaf的过程也并不复杂。只需添加thymeleaf-starter包依赖,SpringBoot将自动将Thymeleaf注册为默认的模板引擎。然后,您只需要编写Thymeleaf模板文件即可。 最后,值得注意的是,使用SpringBootThymeleaf进行Web开发的好处在于它们之间的紧密集成。这种紧密集成可以更轻松地创建动态和交互性的Web应用程序,这是传统的HTML和JavaScript不能提供的。 总的来说,SpringBootThymeleaf是一对非常强大且易于使用的Web开发工具组合,它们的出现大大提高了Web开发的效率和质量,同时也为开发人员提供了更好的开发体验。我们相信,这对于Web开发者来说是非常有价值的组合。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值