js怎样获得后台Model中的值

JavaScript016

js怎样获得后台Model中的值,第1张

获取id   ${user.id}

获取name ${user.name}

获取company ${user.company}

JS中直接从java后台获得对象的值(数组的值)

这里举得例子是:JS直接从后台Contorller中(SpringMVC中的model中)获得数值的值

Contorller 此处将 talentIntegralRecordsDay talentIntegralRecordsIntegral 两个数组用JSON.toJSONString()封装。

@SuppressWarnings("deprecation")

@RequestMapping("/integralParadise")    public ModelAndView Welcome(HttpServletRequest request){

Users user = userService.currentUser(request) 

user.getTalentUser().getIntegral()

System.out.println(user.getTime().getDate())

TalentIntegralRecord[] signInTalentIntegralRecords= wechatIntegralService.getUserSignInTalentIntegralRecords(user.getId())       int size = signInTalentIntegralRecords.length       int[] talentIntegralRecordsDay = new int[size]

Long[] talentIntegralRecordsIntegral = new Long[size]       for(int i=0i<signInTalentIntegralRecords.lengthi++){

talentIntegralRecordsDay[i]=signInTalentIntegralRecords[i].getOperatorTime().getDate()

talentIntegralRecordsIntegral[i]=signInTalentIntegralRecords[i].getIntegral()

}

Map<String,Object>map = new HashMap<String,Object>()

map.put("talentIntegralRecordsDay", JSON.toJSONString(talentIntegralRecordsDay))

map.put("talentIntegralRecordsIntegral", JSON.toJSONString(talentIntegralRecordsIntegral))       return new ModelAndView("wechat/integralParadise/rili",map)

}

前台JSP 因为用到两个数组数据的JS代码为页面引用的JS代码所以要在页面中先声明获得后台两个数组(这段JS代码应在引用的JS文件前面)

<script type="text/javascript">

$(document).ready(function(){

window.talentIntegralRecordsDay = ${talentIntegralRecordsDay}

window.talentIntegralRecordsIntegral = ${talentIntegralRecordsIntegral}

})</script>

引用的JS文件 开始就获得了两个数组的值

$(function() {    var signFun = function() {      

var dateArray = window.talentIntegralRecordsDay// 假设已经签到的

var talentIntegralRecordsIntegral = window.talentIntegralRecordsIntegral       var $dateBox = $("#js-qiandao-list"),

$currentDate = $(".current-date"),

$qiandaoBnt = $("#js-just-qiandao"),

_html = '',

_handle = true,

myDate = new Date()

$currentDate.text(myDate.getFullYear() + '年' + parseInt(myDate.getMonth() + 1) + '月' + myDate.getDate() + '日')       var monthFirst = new Date(myDate.getFullYear(), parseInt(myDate.getMonth()), 1).getDay()       var d = new Date(myDate.getFullYear(), parseInt(myDate.getMonth() + 1), 0)       var totalDay = d.getDate()//获取当前月的天数

for (var i = 0i <42i++) {

_html += ' <li><div class="qiandao-icon"></div></li>'

}

$dateBox.html(_html) //生成日历网格

var $dateLi = $dateBox.find("li")       for (var i = 0i <totalDayi++) {

$dateLi.eq(i + monthFirst).addClass("date" + parseInt(i + 1))           for (var j = 0j <dateArray.lengthj++) {                if (i == dateArray[j]) {

$dateLi.eq(i).addClass("qiandao")                   var integral                   if(talentIntegralRecordsIntegral[j]==0){

integral="大转盘"

}else{

integral="+"+talentIntegralRecordsIntegral[j]

}

$dateLi.eq(i).find("div").text(integral)

}

}

} //生成当月的日历且含已签到

$(".date" + myDate.getDate()).addClass('able-qiandao')

$dateBox.on("click", "li", function() {                if ($(this).hasClass('able-qiandao') &&_handle) {

$(this).addClass('qiandao')

qiandaoFun()

}

1、在微信开发者工具中,打开app.json文件,在pages数组中增加show.wxml页面相关文件的代码,以加粗显示,代码如下:

{

"pages":[

"pages/index/index",

"pages/show/show",

"pages/logs/logs"

],

"window":{

"backgroundTextStyle":"light",

"navigationBarBackgroundColor": "#ccc",

"navigationBarTitleText": "WeChat",

"navigationBarTextStyle":"black"

}

}

2、在index.wxml文件中,在类为usermotto的view组件中添加绑定属性catchtap='enterShow',以加粗显示,代码如下:

<!--index.wxml-->

<view class="container">

<view class="userinfo">

<button wx:if="{{!hasUserInfo &&canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo">获取头像昵称 </button>

<block wx:else>

<image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" background-size="cover"></image>

<text class="userinfo-nickname">{{userInfo.nickName}}</text>

</block>

</view>

<view class="usermotto" catchtap='enterShow'>

<text class="user-motto">{{motto}}</text>

</view>

</view>

3、在index.js文件中,将data中motto的值改为“点击进入”。编写实现跳转的自定义函数enterShow,加粗显示,代码如下:

//index.js

//获取应用实例

const app = getApp()

Page({

data: {

motto: '点击进入',

userInfo: {},

hasUserInfo: false,

canIUse: wx.canIUse('button.open-type.getUserInfo')

},

//事件处理函数

enterShow:function(){

wx.navigateTo({

url: '../show/show',

})

4、 在show.wxml中,输入跳转后页面显示的信息,代码如下:

<view>

<text>这是跳转后的页面</text>

</view>

5、然后在index.xwml中点击测试就可以了。

说明:在上面的页面跳转自定义函数enterShow中,也可以使用wx.redirectTo实现跳转。两者的区别:redirectTo将关闭当前页面,跳转到指定页面,页面左上角没有返回的箭头按钮;而navigateTo将保留页面,跳转到指定页面,页面左上角有返回的箭头按钮。

扩展资料

其实在小程序后台很早就有个wx.openUrl的函数,普通开发者没有调用权限,这次微信给自家的小程序开放权限,旨在测试这一功能可能的风险。因为这一功能如果全部开放,将会给小程序用户带来很大的安全隐患。居心不良的开发者可能会将用户引流至一些不安全页面。

小程序的审核难度也会变得很大。因为微信除了审核小程序本身的页面跳转和内容,还需要审核外链的链接,并且还不一定能够审核清楚。

有一个可能是你的js代码中有

①、function a() {....}或②、var a = function() {...}

js解释器解释这两种的方法是不同的,第一种立马进行解析,第二种是在调用的时候才解析。

解决方法:

建议将需要加载的js文件在页面初始化时一次加载完成。

嵌套调用的js代码中用上述①方法。