欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-24 08:12:53
在路由时传递参数,一般有两种形式,一种是拼接在url地址中,另一种是查询参数。如:。下面根据代码看一下,vue 和 spring boot 中各自是如何处理传递和接受参数的...

在路由时传递参数,一般有两种形式,一种是拼接在url地址中,另一种是查询参数。如:。下面根据代码看一下,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地址中,另一种是查询参数。如:。下面根据代码看一下,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地址中,另一种是查询参数。如:。下面根据代码看一下,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中路由传递参数的实现代码,希望对大家有所帮助