學成在線--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.pswp.cn/news/452266.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452266.shtml
英文地址,請注明出處:http://en.pswp.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 ) 的方式來進行多個變量…