学成在线--5.CMS页面管理开发(修改页面)

文章目录

    • 1.修改页面流程
      • 1)前端逻辑
      • 2)后端逻辑
    • 2.修改页面接口定义
    • 3.后端开发--Dao
    • 4.后端开发--Service
    • 5.后端开发--Controller
      • 1)根据id查询页面
      • 2)保存页面信息
    • 6.前端开发--页面处理流程
    • 7.前端开发--编写page_edit.vue
    • 8.前端开发--配置路由
    • 9.前端开发--在page_list.vue中添加“编辑”链接
    • 10.前端开发--进入修改页面立即显示要修改的页面信息
      • 1)定义api方法
      • 2)定义数据对象
      • 3)在created钩子方法中查询页面信息
    • 11.前端开发--Api调用
      • 1)定义api方法
      • 2)提交按钮方法
      • 3)提交按钮时间内容

1.修改页面流程

1)前端逻辑

(1)用户在页面列表中,点击“编辑”按钮;
(2)进入编辑页面,通过钩子方法请求服务端获取正在编辑的当前页面信息,并赋值给数据模型对象;
(3)页面信息通过数据绑定在表单显示;
(4)用户修改信息点击“提交”,请求服务端修改页面信息接口。

2)后端逻辑

(1)用户在前端点击“编辑”,跳转编辑页面后,需要显示页面信息,此时后端向服务器请求一次数据(使用 Spring Data提供的findById方法完成根据主键查询 );
(2)用户在编辑页面修改相应信息后,点击“提交“,此时第二次和数据库进行数据交互(使用 Spring Data提供的save方法完成数据保保存)。

2.修改页面接口定义

文件位置:Api项目下的com/ xuecheng/ api/ cms/ CmsPageControllerApi
修改页面需要定义两个API接口,一个用于根据指定id进行查询,一个用于对相应信息进行编辑,分别如下:

@ApiOperation("通过ID查询页面")
public CmsPage findById(String id);@ApiOperation("修改页面")
public CmsPageResult edit(String id,CmsPage cmsPage);

3.后端开发–Dao

文件位置:com/ xuecheng/ manage_cms/ dao/ CmsPageRepository

使用 Spring Data提供的findById方法完成根据主键查询 。

使用 Spring Data提供的save方法完成数据保存 。

4.后端开发–Service

文件位置:com/ xuecheng/ manage_cms/ service/ PageService

    //根据页面id查询页面public CmsPage getById(String id){Optional<CmsPage> optional = cmsPageRepository.findById(id);if(optional.isPresent()){CmsPage cmsPage = optional.get();return cmsPage;}return null;}//修改页面public CmsPageResult update(String id,CmsPage cmsPage){//根据id从数据库查询页面信息CmsPage one = this.getById(id);if(one!=null){//准备更新数据//设置要修改的数据//更新模板idone.setTemplateId(cmsPage.getTemplateId());//更新所属站点one.setSiteId(cmsPage.getSiteId());//更新页面别名one.setPageAliase(cmsPage.getPageAliase());//更新页面名称one.setPageName(cmsPage.getPageName());//更新访问路径one.setPageWebPath(cmsPage.getPageWebPath());//更新物理路径one.setPagePhysicalPath(cmsPage.getPagePhysicalPath());//提交修改cmsPageRepository.save(one);return new CmsPageResult(CommonCode.SUCCESS,one);}//修改失败return new CmsPageResult(CommonCode.FAIL,null);}

5.后端开发–Controller

文件位置:com/ xuecheng/ manage_cms/ controller/ CmsPageController

1)根据id查询页面

    @Override@GetMapping("/get/{id}")public CmsPage findById(@PathVariable("id") String id) {return pageService.getById(id);}

2)保存页面信息

    @Override@PutMapping("/edit/{id}")//这里使用put方法,http 方法中put表示更新public CmsPageResult edit(@PathVariable("id")String id, @RequestBody CmsPage cmsPage) {return pageService.update(id,cmsPage);}

6.前端开发–页面处理流程

(1)用户在页面列表中,点击“编辑”按钮;
(2)进入编辑页面,通过钩子方法请求服务端获取正在编辑的当前页面信息,并赋值给数据模型对象;
(3)页面信息通过数据绑定在表单显示;
(4)用户修改信息点击“提交”,请求服务端修改页面信息接口。

7.前端开发–编写page_edit.vue

修改页面的布局同添加页面,可以直接复制添加页面,在添加页面基础上修改。
文件位置:src/ module/ cms/ page/ page_edit.vue

<template><div><el-form   :model="pageForm" label-width="80px" :rules="pageFormRules" ref="pageForm" ><el-form-item label="所属站点" prop="siteId"><el-select v-model="pageForm.siteId" placeholder="请选择站点"><el-optionv-for="item in siteList":key="item.siteId":label="item.siteName":value="item.siteId"></el-option></el-select></el-form-item><el-form-item label="选择模版" prop="templateId"><el-select v-model="pageForm.templateId" placeholder="请选择"><el-optionv-for="item in templateList":key="item.templateId":label="item.templateName":value="item.templateId"></el-option></el-select></el-form-item><el-form-item label="页面名称" prop="pageName"><el-input v-model="pageForm.pageName" auto-complete="off" ></el-input></el-form-item><el-form-item label="别名" prop="pageAliase"><el-input v-model="pageForm.pageAliase" auto-complete="off" ></el-input></el-form-item><el-form-item label="访问路径" prop="pageWebPath"><el-input v-model="pageForm.pageWebPath" auto-complete="off" ></el-input></el-form-item><el-form-item label="物理路径" prop="pagePhysicalPath"><el-input v-model="pageForm.pagePhysicalPath" auto-complete="off" ></el-input></el-form-item><el-form-item label="数据Url" prop="dataUrl"><el-input v-model="pageForm.dataUrl" auto-complete="off" ></el-input></el-form-item><el-form-item label="类型"><el-radio-group v-model="pageForm.pageType"><el-radio class="radio" label="0">静态</el-radio><el-radio class="radio" label="1">动态</el-radio></el-radio-group></el-form-item><el-form-item label="创建时间"><el-date-picker type="datetime" placeholder="创建时间" v-model="pageForm.pageCreateTime"></el-date-picker></el-form-item></el-form><div slot="footer" class="dialog-footer"><el-button @click="go_back">返回</el-button><el-button type="primary" @click.native="editSubmit" :loading="addLoading">提交</el-button></div></div>
</template>
<script>import * as cmsApi from '../api/cms'export default{data(){return {//页面idpageId:'',//模版列表templateList:[],addLoading: false,//加载效果标记//新增界面数据pageForm: {siteId:'',templateId:'',pageName: '',pageAliase: '',pageWebPath: '',dataUrl:'',pageParameter:'',pagePhysicalPath:'',pageType:'',pageCreateTime: new Date()},pageFormRules: {siteId:[{required: true, message: '请选择站点', trigger: 'blur'}],templateId:[{required: true, message: '请选择模版', trigger: 'blur'}],pageName: [{required: true, message: '请输入页面名称', trigger: 'blur'}],pageWebPath: [{required: true, message: '请输入访问路径', trigger: 'blur'}],pagePhysicalPath: [{required: true, message: '请输入物理路径', trigger: 'blur'}]},siteList:[]}},methods:{go_back(){this.$router.push({path: '/cms/page/list', query: {page: this.$route.query.page,siteId:this.$route.query.siteId}})},editSubmit(){this.$refs.pageForm.validate((valid) => {//表单校验if (valid) {//表单校验通过this.$confirm('确认提交吗?', '提示', {}).then(() => {this.addLoading = true;//修改提交请求服务端的接口cmsApi.page_edit(this.pageId,this.pageForm).then((res) => {console.log(res);if(res.success){this.addLoading = false;this.$message({message: '提交成功',type: 'success'});//返回this.go_back();}else{this.addLoading = false;this.$message.error('提交失败');}});});}});}},created: function () {this.pageId=this.$route.params.pageId;//根据主键查询页面信息cmsApi.page_get(this.pageId).then((res) => {console.log(res);if(res){this.pageForm = res;}});},mounted:function(){//初始化站点列表this.siteList = [{siteId:'5a751fab6abb5044e0d19ea1',siteName:'门户主站'},{siteId:'102',siteName:'测试站'}]//模板列表this.templateList = [{templateId:'5a962b52b00ffc514038faf7',templateName:'首页'},{templateId:'5a962bf8b00ffc514038fafa',templateName:'轮播图'}]}}
</script>
<style></style>

预览:
在这里插入图片描述

8.前端开发–配置路由

文件位置:src/ module/ cms/ route/ index.js

import Home from '@/module/home/page/home.vue';
import page_list from '@/module/cms/page/page_list.vue';
import page_add from '@/module/cms/page/page_add.vue';
import page_edit from '@/module/cms/page/page_edit.vue';
export default [{path: '/',component: Home,name: 'CMS',//菜单名称hidden: false,children:[{path:'/cms/page/list',name:'页面列表',component: page_list,hidden:false},{path:'/cms/page/add',name:'新增页面',component: page_add,hidden:true},{path:'/cms/page/edit/:pageId',name:'修改页面',component: page_edit,hidden:true}]}
]

9.前端开发–在page_list.vue中添加“编辑”链接

文件位置:src/ module/ cms/ page/ page_list.vue

参考table组件的例子,在page_list.vue上添加“操作”列

<el‐table‐column label="操作" width="80">
<template slot‐scope="page">
<el‐button
size="small"type="text"
@click="edit(page.row.pageId)">编辑
</el‐button>
</template>
</el‐table‐column>

编写edit方法

//修改
edit:function (pageId) {
this.$router.push({ path: '/cms/page/edit/'+pageId,query:{
page: this.params.page,
siteId: this.params.siteId}})
}

预览:
在这里插入图片描述

10.前端开发–进入修改页面立即显示要修改的页面信息

1)定义api方法

文件位置:src/ module/ cms/ api/ cms.js

//根据id查询页面
export const page_get = id =>{return http.requestQuickGet(apiUrl+'/cms/page/get/'+id)
}

2)定义数据对象

文件位置:src/ module/ cms/ page/ page_edit.vue

进入修改页面传入pageId参数,在数据模型中添加pageId

data(){return {//页面idpageId:'',//模版列表templateList:[],addLoading: false,//加载效果标记//新增界面数据pageForm: {siteId:'',templateId:'',pageName: '',pageAliase: '',pageWebPath: '',dataUrl:'',pageParameter:'',pagePhysicalPath:'',pageType:'',pageCreateTime: new Date()},pageFormRules: {siteId:[{required: true, message: '请选择站点', trigger: 'blur'}],templateId:[{required: true, message: '请选择模版', trigger: 'blur'}],pageName: [{required: true, message: '请输入页面名称', trigger: 'blur'}],pageWebPath: [{required: true, message: '请输入访问路径', trigger: 'blur'}],pagePhysicalPath: [{required: true, message: '请输入物理路径', trigger: 'blur'}]},siteList:[]}},

3)在created钩子方法中查询页面信息

文件位置:src/ module/ cms/ page/ page_edit.vue

created: function () {this.pageId=this.$route.params.pageId;//根据主键查询页面信息cmsApi.page_get(this.pageId).then((res) => {console.log(res);if(res){this.pageForm = res;}});},

11.前端开发–Api调用

1)定义api方法

文件位置:src/ module/ cms/ api/ cms.js

//修改页面提交
export const page_edit = (id,params) =>{return http.requestPut(apiUrl+'/cms/page/edit/'+id,params)
}

2)提交按钮方法

文件位置:src/ module/ cms/ page/ page_edit.vue

<el‐button type="primary" @click="editSubmit" >提交</el‐button>

3)提交按钮时间内容

文件位置:src/ module/ cms/ page/ page_edit.vue

      editSubmit(){this.$refs.pageForm.validate((valid) => {//表单校验if (valid) {//表单校验通过this.$confirm('确认提交吗?', '提示', {}).then(() => {this.addLoading = true;//修改提交请求服务端的接口cmsApi.page_edit(this.pageId,this.pageForm).then((res) => {console.log(res);if(res.success){this.addLoading = false;this.$message({message: '提交成功',type: 'success'});//返回this.go_back();}else{this.addLoading = false;this.$message.error('提交失败');}});});}});}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452266.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在树莓派上播放音频

https://blog.csdn.net/qinxiandiqi/article/details/39155593转载于:https://www.cnblogs.com/Baronboy/p/9206164.html

Map四种获取key和value值的方法,以及对map中的元素排序

2019独角兽企业重金招聘Python工程师标准>>> 获取map的值主要有四种方法&#xff0c;这四种方法又分为两类: 一类是调用map.keySet()方法来获取key和value的值&#xff0c; 另一类则是通过map.entrySet()方法来取值&#xff0c; 两者的区别在于&#xff0c;前者主要…

配置Oracle Instant Client环境

1.配置Oracle Instant Client环境 到Oracle官网下载Oracle Instant Client&#xff0c;注意选择x86平台&#xff0c;Toad只认32位的Oracle Instant Client。至于版本号&#xff0c;没有特别要求&#xff0c;版本向下兼容。 桌面上&#xff0c;右键点“我的电脑”&#xff0c;选…

学成在线--6.CMS页面管理开发(删除页面)

文章目录0.删除用户逻辑1.删除页面接口定义2.后端开发--Dao3.后端开发--Service4.后端开发--controller5.前端开发--page_list.vue添加删除按钮6.前端开发--page_list.vue编写删除事件7.后端开发--Api方法定义Api方法0.删除用户逻辑 1&#xff09;前端逻辑 &#xff08;1&…

诺基亚是“不跟随”还是跟不上?

在Android和iPhone为主流的环境下&#xff0c;诺基亚用“不跟随”的口号表明自己欲保持个性&#xff0c;但是否也意味着其固步自封&#xff0c;跟不上时代&#xff1f; 5年市值缩水超900亿欧元&#xff0c;全球业绩连续4个季度亏损&#xff0c;更为可怕的是&#xff0c;被视为…

HTTP 协议(详解)

HTTP协议简介&#xff1a;HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写&#xff0c;是用于万维网&#xff08;www.world wide web&#xff09;服务器与本地浏览器之间传输文本的传输协议。 http请求协议与相应协议HTTP协议包含浏览器发送数据到服务器需要遵循…

对象的特点

对象有如下一些基本特点。(1) 以数据为中心。操作围绕对其数据所需要做的处理来设置&#xff0c;不设置与这些数据无关的操作&#xff0c;而且操作的结果往往与当时所处的状态 (数据的值)有关。 (2) 对象是主动的。它是进行处理的主体。不能从外部直接加工它的私有数据&a…

React Native集成Redux框架讲解与应用

学过React Native的都知道&#xff0c;RN的UI是根据相应组件的state进行render的&#xff0c;而页面又是由大大小小的组件构成&#xff0c;导致每个组件都必须维护自身的一套状态&#xff0c;因此当页面复杂化的时候&#xff0c;管理state会相当吃力的。而redux提供了一套机制来…

【笔试记录】2021/3/10阿里

阿里20210310春招笔试记录-Python解题 第一题 问题描述&#xff1a; 小偷从出发点按指定方向出发&#xff0c;除非遇到墙或超出城市必须转方向&#xff0c;不然只能直走。城市大小m*n。输入描述&#xff1a; 1. 第1行&#xff0c;三个数字m n k&#xff1b;m*n表示城市大小&…

Spring mvc中@RequestMapping 6个基本用法小结

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 小结下spring mvc中的RequestMapping的用法。 1&#xff09;最基本的&#xff0c;方法级别上应用&#xff0c;例如&#xff1a; …

学成在线--7.CMS页面管理开发(异常处理)

文章目录1.异常处理的问题分析2.异常处理流程3.可预知异常处理1.自定义异常类2.异常抛出类3.异常捕获类4.异常处理测试1&#xff09;定义错误代码2&#xff09;异常处理测试4.不可预知异常处理1.定义异常捕获方法1&#xff09;异常抛出测试2&#xff09;异常捕获方法1.异常处理…

函数重载与运算符重载

有两种重载&#xff1a;函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字&#xff1b;运算符重载是指同一个运算符可以施加于不同类型的操作数上面。就是对已有的运算符重新进行定义&#xff0c;赋予其另一种功能&#xff0c;以适应不同的数据类型…

Django(6)

为什么不用_set related_name和related_query_name的区别related_name将成为相关对象的属性&#xff0c;允许您使用外键对模型进行“倒退”。例如&#xff0c;如果ModelA有像下面这样的字段&#xff0c;那么model_b ForeignKeyField(ModelB, related_namemodel_as)这将使您能够…

P5 RV1126编码测试Demo

目录 前言 01 测试Demo大致流程图 02 代码分析 2.1 VI设备初始化 2.2 使能通道 —— RK_MPI_VI_EnableChn 2.3 VI 和 VENC绑定 2.4 创建 编码线程 前言 从本章开始我们将要学习嵌入式音视频的学习了 &#xff0c;使用的瑞芯微的开发板 &#x1f3ac; 个人主页&#xff1a…

MP算法和OMP算法及其思想

主要介绍MP(Matching Pursuits)算法和OMP(Orthogonal Matching Pursuit)算法[1]&#xff0c;这两个算法虽然在90年代初就提出来了&#xff0c;但作为经典的算法&#xff0c;国内文献(可能有我没有搜索到)都仅描述了算法步骤和简单的应用&#xff0c;并未对其进行详尽的分析&…

【牛客刷题记录】2021-03-10

牛客代码刷题记录1 问题一 给定一个数组序列, 需要求选出一个区间, 使得该区间是所有区间中经过如下计算的值最大的一个&#xff1a; 区间中的最小数 * 区间所有数的和最后程序输出经过计算后的最大值即可&#xff0c;不需要输出具体的区间。如给定序列 [6 2 1]则根据上述公式…

SpringMVC详细示例实战教程

一、SpringMVC基础入门&#xff0c;创建一个HelloWorld程序 1.首先&#xff0c;导入SpringMVC需要的jar包。 2.添加Web.xml配置文件中关于SpringMVC的配置 123456789101112131415<!--configure the setting of springmvcDispatcherServlet and configure the mapping-->&…

学成在线--8.Freemarker入门教程

文章目录1.FreeMarker介绍1&#xff09;常用的java模板引擎还有哪些&#xff1f;2&#xff09;freemarker是一个用Java开发的模板引擎3&#xff09;模板数据模型输出2.FreeMarker快速入门1&#xff09;创建测试工程2&#xff09;配置文件3&#xff09;创建模型类4&#xff09;创…

面向对象建模

用面向对象方法开发软件&#xff0c;通常需要建立3种形式的模型&#xff0c;它们分别是 描述系统数据结构的对象模型 &#xff0c; 描述系统控制结构的动态模型 和 描述系统功能的功能模型 。一个典型的软件系统使用数据结构(对象模型)&#xff0c;执行操作(动态模型)&#xff…

if...elif...else...fi和case...esac的脚本条件判断式

注意1&#xff1a; if 表达式和case 表达式的区别及什么时候使用哪个要有明确的区分&#xff1f; 『 if .... then .... fi 』对于变量的判断是以『比对』的方式来分辨的&#xff0c; 如果符合状态就进行某些行为&#xff0c;并且透过较多层次 (就是elif ) 的方式来进行多个变量…