Spring Boot/VUE中路由传递参数的实现代码

在路由时传递参数,一般有两种形式,一种是拼接在url地址中,另一种是查询参数。如:http://localhost:8080/router/tang/101?type=spor&num=12。下面根据代码看一下,VUE 和 Spring Boot 中各自是如何处理传递和接受参数的。

Spring Boot
package com.tang.demo1.controller;
import org.springframework.web.bind.annotation.*;
@RestController
public class RouterController {
 @RequestMapping(path = {"/router/{name}/{classid}"}, method = RequestMethod.GET)
 public String router(@PathVariable("name") String name
 ,@PathVariable("classid") int classid
 ,@RequestParam(value = "type", defaultValue = "news") String type
 ,@RequestParam(value = "num", required = falsef) int num){
 // 访问 http://localhost:8080/router/tang/101?type=spor&num=12
 return name + classid + type + num;
 }
} 

在url路径中的,被称为pathVariable,查询参数被称为pequestParm。在controller中接受参数,可以直接在方法里用了。

VUE

routes: [
 {
 path: '/',
 name: 'HomePage',
 component: HomePage
 },
 {
 path: '/user/:id?/:type?',
 name: 'User',
 component: User
 }
 ] 

首先在路由中配置url中需要传递的参数,被称为动态路径参数。以“:”开始,末尾的“?”表示为可选的参数。

<template>
<div>
 <p>user</p>
 <router-link :to="'/user/' + item.id + '/' + item.type +'?name=' + item.type" :key="index" v-for="(item, index) in userList">{{item.name}}</router-link>
 <div v-if="childName">
 <p>-----</p>
{{childName}}
 </div>
</div>
</template>
<script>
var list = [
 {'name': 'xiaoming',
 'id': 123,
 'type': 'vip'},
 {'name': 'gangzi',
 'id': 456,
 'type': 'common'}
]
export default {
 data(){
 return {
 userList: list,
 childName: null
 }
 },
 watch: {
 $route(){
 if(this.$route.params.id){
this.childName = this.$route.params.id +'//////' + this.$route.query.name;
 }else{
 this.childName = null
 }
 }
 },
 methods: {
 },
 created() {
 // this.$route.params为动态路径参数
 if(this.$route.params.id){
// this.$route.params为查询参数
this.childName = this.$route.params.id +'//////' + this.$route.query.name;
 }else{
 this.childName = null
 }
 },
 deactivated() {
 console.log('deact')
 },
 computed: {
 },
 components: {
 }
};
</script> 

vue中接受参数需要从routes实例中获取,动态路径参数在params里,查询参数在query里。

当vue的动态路径组件处在激活状态时,如果改变动态路径参数,那么写在created()的方法将不会再次被调用,因为该组件已经创建好了。此时,可以为$route添加一个watch,当其发生变化时,再获取数据。

在路由时传递参数,一般有两种形式,一种是拼接在url地址中,另一种是查询参数。如:http://localhost:8080/router/tang/101?type=spor&num=12。下面根据代码看一下,VUE 和 Spring Boot 中各自是如何处理传递和接受参数的。

Spring Boot
package com.tang.demo1.controller;
import org.springframework.web.bind.annotation.*;
@RestController
public class RouterController {
 @RequestMapping(path = {"/router/{name}/{classid}"}, method = RequestMethod.GET)
 public String router(@PathVariable("name") String name
 ,@PathVariable("classid") int classid
 ,@RequestParam(value = "type", defaultValue = "news") String type
 ,@RequestParam(value = "num", required = falsef) int num){
 // 访问 http://localhost:8080/router/tang/101?type=spor&num=12
 return name + classid + type + num;
 }
} 

在url路径中的,被称为pathVariable,查询参数被称为pequestParm。在controller中接受参数,可以直接在方法里用了。

VUE

routes: [
 {
 path: '/',
 name: 'HomePage',
 component: HomePage
 },
 {
 path: '/user/:id?/:type?',
 name: 'User',
 component: User
 }
 ]

首先在路由中配置url中需要传递的参数,被称为动态路径参数。以“:”开始,末尾的“?”表示为可选的参数。

<template>
<div>
 <p>user</p>
 <router-link :to="'/user/' + item.id + '/' + item.type +'?name=' + item.type" :key="index" v-for="(item, index) in userList">{{item.name}}</router-link> 

 <div v-if="childName">
 <p>-----</p>
{{childName}}
 </div>
</div>
</template>
<script>
var list = [
 {'name': 'xiaoming',
 'id': 123,
 'type': 'vip'},
 {'name': 'gangzi',
 'id': 456,
 'type': 'common'}
]
export default {
 data(){
 return {
 userList: list,
 childName: null
 }
 },
 watch: {
 $route(){
 if(this.$route.params.id){
this.childName = this.$route.params.id +'//////' + this.$route.query.name;
 }else{
 this.childName = null
 }
 }
 },
 methods: { 

 },
 created() {
 // this.$route.params为动态路径参数
 if(this.$route.params.id){
// this.$route.params为查询参数
this.childName = this.$route.params.id +'//////' + this.$route.query.name;
 }else{
 this.childName = null
 } 

 },
 deactivated() {
 console.log('deact')
 },
 computed: { 

 },
 components: {
 }
};
</script> 

vue中接受参数需要从routes实例中获取,动态路径参数在params里,查询参数在query里。

当vue的动态路径组件处在激活状态时,如果改变动态路径参数,那么写在created()的方法将不会再次被调用,因为该组件已经创建好了。此时,可以为$route添加一个watch,当其发生变化时,再获取数据。

在路由时传递参数,一般有两种形式,一种是拼接在url地址中,另一种是查询参数。如:http://localhost:8080/router/tang/101?type=spor&num=12。下面根据代码看一下,VUE 和 Spring Boot 中各自是如何处理传递和接受参数的。

Spring Boot
package com.tang.demo1.controller;
import org.springframework.web.bind.annotation.*;
@RestController
public class RouterController {
 @RequestMapping(path = {"/router/{name}/{classid}"}, method = RequestMethod.GET)
 public String router(@PathVariable("name") String name
 ,@PathVariable("classid") int classid
 ,@RequestParam(value = "type", defaultValue = "news") String type
 ,@RequestParam(value = "num", required = falsef) int num){
 // 访问 http://localhost:8080/router/tang/101?type=spor&num=12
 return name + classid + type + num;
 }
} 

在url路径中的,被称为pathVariable,查询参数被称为pequestParm。在controller中接受参数,可以直接在方法里用了。

VUE

routes: [
 {
 path: '/',
 name: 'HomePage',
 component: HomePage
 },
 {
 path: '/user/:id?/:type?',
 name: 'User',
 component: User
 }
 ] 

首先在路由中配置url中需要传递的参数,被称为动态路径参数。以“:”开始,末尾的“?”表示为可选的参数。

<template>
<div> <p>user</p>
 <router-link :to="'/user/' + item.id + '/' + item.type +'?name=' + item.type" :key="index" v-for="(item, index) in userList">{{item.name}}</router-link>
 <div v-if="childName">
 <p>-----</p>
{{childName}}
 </div>
</div>
</template>
<script>
var list = [
 {'name': 'xiaoming',
 'id': 123,
 'type': 'vip'},
 {'name': 'gangzi',
 'id': 456,
 'type': 'common'}
]
export default {
 data(){
 return {
 userList: list,
 childName: null
 }
 },
 watch: {
 $route(){
 if(this.$route.params.id){
this.childName = this.$route.params.id +'//////' + this.$route.query.name;
 }else{
 this.childName = null
 }
 }
 },
 methods: {
 },
 created() {
 // this.$route.params为动态路径参数
 if(this.$route.params.id){
// this.$route.params为查询参数
this.childName = this.$route.params.id +'//////' + this.$route.query.name;
 }else{
 this.childName = null
 }
 },
 deactivated() {
 console.log('deact')
 },
 computed: {
 },
 components: {
 }
};
</script> 

vue中接受参数需要从routes实例中获取,动态路径参数在params里,查询参数在query里。

当vue的动态路径组件处在激活状态时,如果改变动态路径参数,那么写在created()的方法将不会再次被调用,因为该组件已经创建好了。此时,可以为$route添加一个watch,当其发生变化时,再获取数据。

总结

以上所述是小编给大家介绍的Spring Boot/VUE中路由传递参数的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

您可能感兴趣的文章:

  • springboot获取URL请求参数的多种方式
  • spring boot中的properties参数配置详解
  • 详解如何在Spring Boot项目使用参数校验
  • 详解Spring Boot Web项目之参数绑定
  • 详解vue-router2.0动态路由获取参数
  • 详解vue嵌套路由-params传递参数
  • 详解vue嵌套路由-query传递参数
  • Vue系列:通过vue-router如何传递参数示例
  • Vue.js Ajax动态参数与列表显示实现方法
(0)

相关推荐

  • springboot获取URL请求参数的多种方式

    1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交. /** * 1.直接把表单的参数写在Controller相应的方法的形参中 * @param username * @param password * @return */ @RequestMapping("/addUser1") public String addUser1(String username,String password) { System.out.pri

  • spring boot中的properties参数配置详解

    application.properties application.properties是spring boot默认的配置文件,spring boot默认会在以下两个路径搜索并加载这个文件 src\main\resources src\main\resources\config 配置系统参数 在application.properties中可配置一些系统参数,spring boot会自动加载这个参数到相应的功能,如下 #端口,默认为8080 server.port=80 #访问路径,默认为/

  • 详解如何在Spring Boot项目使用参数校验

    开发web项目有时候我们需要对controller层传过来的参数进行一些基本的校验,比如非空,非null,整数值的范围,字符串的个数,日期,邮箱等等.最常见的就是我们直接写代码校验,这样以后比较繁琐,而且不够灵活. Bean Validation 1.0(JSR-303)是一个校验规范,在spring Boot项目由于自带了hibernate validator 5(http://hibernate.org/validator/)实现,所以我们可以非常方便的使用这个特性 . 核心的pom依赖:

  • 详解vue嵌套路由-query传递参数

    在嵌套路由中我们经常会遇到父路由向子路由里面传递参数,传递参数有两种方法,通过 query 或者 params index.html <div id="app"> <!-- router-view 路由出口, 路由匹配到的组件将渲染在这里 --> <router-view></router-view> </div> main.js 同样通过重定向来显示父路由 import Vue from 'vue' import VueRo

  • Vue系列:通过vue-router如何传递参数示例

    使用vue-router 来实现webapp的页面跳转,有时候需要传递参数,做法如下: 参考文献:http://router.vuejs.org/en/named.html 主要有以下几个步骤: (1) 设置好路由配置 router.map({ '/history/:deviceId/:dataId': { name: 'history', // give the route a name component: { ... } } }) 这里有2个关键点: a)给该路由命名,也就是上文中的 na

  • 详解vue嵌套路由-params传递参数

    在嵌套路由中,父路由向子路由传值除了query外,还有params,params传值有两种情况,一种是值在url中显示,另外一种是值不显示在url中. 1.显示在url中 index.html <div id="app"> <!-- router-view 路由出口, 路由匹配到的组件将渲染在这里 --> <router-view></router-view> </div> main.js params传值是通过 :[参数值]

  • 详解vue-router2.0动态路由获取参数

    一下demo演示2.0中的vue-router是如何获取到不同参数的,并在地址栏中匹配不同的信息 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript" src="vue.js&qu

  • Vue.js Ajax动态参数与列表显示实现方法

    Vue.js简介 vue是法语中视图的意思,Vue.js是一个轻巧.高性能.可组件化的MVVM库,同时拥有非常容易上手的API. 一.动态参数显示 ajax异步请求后,接收到返回的data参数并显示在前端 1.1 引入js,也加入了jQuery <script type="text/javascript" src="/js/vue.min.js"></script> <script type="text/javascript&

  • 详解Spring Boot Web项目之参数绑定

    一.@RequestParam 这个注解用来绑定单个请求数据,既可以是url中的参数,也可以是表单提交的参数和上传的文件 它有三个属性,value用于设置参数名,defaultValue用于对参数设置默认值,required为true时,如果参数为空,会报错 好,下面展示具体例子: 首先是vm: <h1>param1:${param1}</h1> <h1>param2:${param2}</h1> 好吧,就为了展示两个参数 第一种情况: @RequestMa

  • Spring Boot/VUE中路由传递参数的实现代码

    在路由时传递参数,一般有两种形式,一种是拼接在url地址中,另一种是查询参数.如:http://localhost:8080/router/tang/101?type=spor&num=12.下面根据代码看一下,VUE 和 Spring Boot 中各自是如何处理传递和接受参数的. Spring Boot package com.tang.demo1.controller; import org.springframework.web.bind.annotation.*; @RestContro

  • 浅谈angular4.0中路由传递参数、获取参数最nice的写法

    研究ng4的官网,终于找到了我想要的方法.我想要的结果是用'&'拼接参数传送,这样阅读上是最好的. 否则很多'/'的拼接,容易混淆参数和组件名称. 一般我们页面跳转传递参数都是这样的格式: http://angular.io/api?uid=1&username=moon 但是在SPA单页应用中却是下面的结果居多[初级视频都是这样敷衍的] http://angular.io/api/1/moon 那么怎么实现我说的结果呢? 重点开始了. 实现从product页面跳转到product-det

  • Vue中mapMutations传递参数方式

    目录 通过子组件定义的方法传递参数 在…mapMutations引用 当然也可以写直接传递 关于mapMutations的作用 通过子组件定义的方法传递参数 在…mapMutations引用 不多逼逼,看代码! store文件中: import Vuex from 'vuex'; import Vue from 'vue'; Vue.use(Vuex); let store = new Vuex.Store({     state: {         name: 'hahahah',    

  • Vue路由传递参数与重定向的使用方法总结

    目录 前言 概念 1.vue路由传参 2.vue路由重定向 实际使用场景 路由传参 1.使用步骤 2.params传参 2-1.路由属性配置参数 3.query传参 4.url字符串拼接 5.接收路由参数的方法,分 ? 和 : 两种接收方式 6.路由传参的示例 路由重定向 1.路由重定向语法 2.实际示例 其他 拓展 最后 前言 前端开发过程中,作为前端开发者来说关于vue的使用并不陌生,vue相关常用的知识点也是非常重要的,不管是在实际开发中还是在求职面试中都很重要.在vue使用中,路由相关的

  • vue中路由参数传递可能会遇到的坑

    前言 vue中路由跳转传参数有多种,自己常用的是下面的几种 通过router-link进行跳转 通过编程导航进行路由跳转 本文主要给大家介绍了关于vue路由参数传递遇到的一些坑,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 首先我的路由的定义 { path: '/b', name: 'B', component: resolve => require(['../pages/B.vue'], resolve) } 我从A组件跳转到B组件,并通过路由信息对象传递一些参数 this

  • spring boot+vue 的前后端分离与合并方案实例详解

    springboot和vue结合的方案网络上的主要有以下两种: 1. [不推荐]在html中直接使用script标签引入vue和一些常用的组件,这种方式和以前传统的开发是一样的,只是可以很爽的使用vue的双向数据绑定,这种方式只适合于普通的全栈开发. 2.[推荐]使用vue官方的脚手架创建单独的前端工程项目,做到和后端完全独立开发和部署,后端单独部署一个纯restful的服务,而前端直接采用nginx来部署,这种称为完全的前后端分离架构开发模式,但是在分离中有很多api权限的问题需要解决,包括部

  • spring boot 常见http请求url参数获取方法

    在定义一个Rest接口时通常会利用GET.POST.PUT.DELETE来实现数据的增删改查:这几种方式有的需要传递参数,后台开发人员必须对接收到的参数进行参数验证来确保程序的健壮性 GET:一般用于查询数据,采用明文进行传输,一般用来获取一些无关用户信息的数据 POST:一般用于插入数据 PUT:一般用于数据更新 DELETE:一般用于数据删除:一般都是进行逻辑删除(即:仅仅改变记录的状态,而并非真正的删除数据) 1.@PathVaribale 获取url中的数据 请求URL:localhos

  • Vue中路由守卫的具体使用

    目录 1.全局守卫 1.1 全局前置守卫 1.2 全局后置路由守卫 1.3 整合 2. 路由独享的守卫 3.组件内的守卫 作用:对路由进行权限控制 分类:全局守卫.独享守卫.组件内守卫 1.全局守卫 1.1 全局前置守卫 顾名思义,前置守卫主要是在你进行路由跳转之前根据你的状态去 进行一系列操作(全局前置是为在路由初始化以及跳转之前都会触发) 你可以使用router.beforeEach注册一个全局前置守卫(Each:每个,即在任意一个路由跳转的时候都会触发) 每个守卫方法接收三个参数: to:

  • spring boot+vue实现JSAPI微信支付的完整步骤

    目录 微信支付 微信支付前的准备 后台开发 vue前端 总结 微信支付 最近公司要在微信公众号上做一个活动预报名,活动的门票等需要在微信中支付. 微信支付前的准备 微信支付需要一个微信支付商务号(https://pay.weixin.qq.com/index.php/apply/applyment_home/guide_normal),请自行去商务平台申请.商务号申请完后,需要在 “微信公众号平台–>微信支付” 中接入.接入成功后还需要在 “微信公众号平台–>设置–>公众号设置–>

  • 详解Guava Cache本地缓存在Spring Boot应用中的实践

    概述 在如今高并发的互联网应用中,缓存的地位举足轻重,对提升程序性能帮助不小.而 3.x开始的 Spring也引入了对 Cache的支持,那对于如今发展得如火如荼的 Spring Boot来说自然也是支持缓存特性的.当然 Spring Boot默认使用的是 SimpleCacheConfiguration,即使用 ConcurrentMapCacheManager 来实现的缓存.但本文将讲述如何将 Guava Cache缓存应用到 Spring Boot应用中. Guava Cache是一个全内

随机推荐