后台使用freeMarker和前端使用vue的方法及遇到的问题

时间:2021-05-25

一:freeMarker的使用

1:java后台使用freeMarker是通过Model,将值传给前端:

如:

@Controllerpublic class MobileNewsFreeMarkerController {  @RequestMapping("page/test")  public String Test(Model model,HttpServletRequest request){    //获取项目路径      String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+""+request.getContextPath()+"/";    //将页面路径通过model传给前台    model.addAttribute("basePath", basePath);    //通过HttpServletRequest 获取url中的值,如code值    String code = request.getParameter("code");    //将获取的code参数传给前台    model.addAttribute("code ", code );    //页面跳转    return "page/test";  }}

2:前端页面获取后台传输的值(freeMarker传输的值只能在html页面获取)

注:这里是结合vue

第一步:在js中定义vue的相关参数:

var vm = new Vue({  el: '#rrapp',  data: {    basePath:"", //项目路径    code : "", // code参数  },..........(vue后面内容省略)

第二步:再在页面接收后台传输的值

<head>  <script type="text/javascript">     $(document).ready(function() {      <#if basePath??>        vm.basePath="${basePath}";      </#if>      <#if userId??>        vm.code ="${code }";      </#if>     });  </script></head>

二:使用中主要遇到的问题

1:Vue存在调用的先后顺序,虽然html页面将后台传输的值付给vue的data中的参数,但是在mounted中是无法使用的时候获取的还是创建的vue的时候data中赋的值,并不会使用html赋的值:

如:

var vm = new Vue({  el: '#rrapp',  data: {    basePath: "",    code :"",  },mounted: function () {var _this = this;console.log(_this.basePath);//输出的还是:"",并不会输出html赋的值,所有在这里无法使用}

2:但是在vue中methods内的方法是可以直接使用的;初始化如果需要html中传输的参数,可以使用以下方法:

$(function () {  vm.getData(vm.basePath,vm.code);});var vm = new Vue({  el: '#rrapp',  data: {    basePath: "",    code :"",  },methods: {  getData: function (baseUrlFlag,codeFlag) {    var _this=this;    _this.basePath= baseUrlFlag;    _this.code =codeFlag;    //进行初始化业务操作!  },}

总结

以上所述是小编给大家介绍的后台使用freeMarker和前端使用vue的方法及遇到的问题,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章