使用el表达式获取request中map值的问题

使用el表达式获取request中map值的问题,第1张

你要明白el表达式是在什么时候执行的

el表达式实际上是java代码, 即jsp里的java代码, 是servlet执行的

也就是说, 后台看到el表达式的时候就执行了, 然后用执行的结果代替这个el表达式, 然后再返回给前台

你写alert("${endtimeMap['8']}");

后台看到的是就是${endtimeMap['8']}这个东西, 然后计算从map里得到对应的值, 代替则个东西, 所以你到前台看到的实际上是map里的值了

如果你写alert("${endtimeMap['"+ff+"']}");, 后台看到的是${endtimeMap['"+ff+"']}, 你觉得后台能把这个解析成什么, 后台会认为你是取map里key值为"\"+ff+\""的value(你要是不信, 你给你的map里添一组这个key-value)

归根结底还是执行顺序的问题, el表达式是servlet是后台执行的, js是得到response后在前台执行的, el优先于js, 你的想法是js先把值穿进去, 然后el表达式再得值, 所以必须不正确了

这样说你应该明白了吧

[]map(); 基本用法跟forEach方法类似:

arraymap(callback,[ thisObject]);

map方法的作用不难理解,“映射”嘛,也就是原数组被“映射”成对应新数组。下面这个例子是数值项求平方:

可用于数组转换,将数组转换成对象数组

Map 对象是对象 Object 中的一种。 Map 对象保存键值对,并且能够记住键的原始 插入顺序 。任何值(对象或基本类型)都可以作为一个键或一个值。

new Map() 直接声明一个Map对象。接收一个二维数组,该数组的成员表示键值对。

Map对象是由二维数组构成的,所以转变为数组的时候也是二维数组。

通过 或 Arrayfrom() 可以转换为数组

注意:

1、Map的键为对象等引用类型的时候,保存的是内存地址。

2、 *** 作Map对象中的值,不能使用方括号,否则会出现异常

Map对象的合并就是将Map对象展成数组,然后调用 new Map() 构造函数。

angularjs是一个很强大的JavaScript框架,强大到我看了半个小时写出来一个基本的angularjs项目(本人是标准的后台开发人员)

angularjs获取map的value值很简单{{mapkey}},那么在未知key的时候怎么获取key了

<td ng-repeat="(x,y) in map">{{y}}</td>

<td ng-repeat="(x,y) in map">{{x}}</td>

当遇到value可能为null的时候

<td ng-repeat="(x,y) in map">{{y || " "}}</td>

function  drawbaiduMap(){  //画百度地图

bm = new BMapMap("allmap");            

//bmcenterAndZoom("北京",18);  

var bs = bmgetBounds();   //获取可视区域

var bssw = bsgetSouthWest();   //可视区域左下角

var bsne = bsgetNorthEast();   //可视区域右上角

bmaddControl(new BMapNavigationControl());

}

function refTable(){ // 获取坐标组

cur_date=$("#sele_date")val();

var data_arr=getGps_msg(cur_date);

drawPion(data_arr);

}

function drawPion(data_arr){  //描点

bmclearOverlays();

var cx=data_arr['0']['longitude'];

var cy=data_arr['0']['latitude'];

bmcenterAndZoom(new BMapPoint(cx,cy),18);

var dianshu=0;

for (var i=0;i<data_arrlength;i++){

var  msg=data_arr[i]['rec_time'];

var   lab_msg="";

  var   xx= data_arr[i]['longitude'];

  var   yy= data_arr[i]['latitude'];

  //alert (i);

var markergps = new BMapMarker(new BMapPoint(xx,yy));

//bmaddOverlay(markergps,i); //添加GPS标注

if (dianshu==9){

bmaddOverlay(markergps,i); //添加GPS标注

dianshu=0;

}else{

dianshu++;

}

if(i==0){

//var markergps = new BMapMarker(new BMapPoint(xx,yy));

bmaddOverlay(markergps,i); //添加GPS标注

lab_msg="最后位置";

}

if(data_arr[i]['img_file_path']!==""){

//var markergps = new BMapMarker(new BMapPoint(xx,yy));

bmaddOverlay(markergps,i); //添加GPS标注

lab_msg+="[图]";

var sContent ="<img style='float:right;margin:4px' id='imgDemo"+i+"' src='"+data_arr[i]['img_file_path']+"' width='320' height='240' title='photo'/>";

 addClickHandler(sContent,markergps);

}

if (i==data_arrlength-1){

//var markergps = new BMapMarker(new BMapPoint(xx,yy));

bmaddOverlay(markergps,i); //添加GPS标注

lab_msg="开始位置";

}

var labelgps = new BMapLabel(i+lab_msg,{offset:new BMapSize(20,-10)});

markergpssetLabel(labelgps,i); //添加GPS标注

}

}

获取id   ${userid}

获取name ${username}

获取company ${usercompany}

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

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

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

@SuppressWarnings("deprecation")

@RequestMapping("/integralParadise")    public ModelAndView Welcome(>

Users user = userServicecurrentUser(request);  

usergetTalentUser()getIntegral();

Systemoutprintln(usergetTime()getDate());

TalentIntegralRecord[] signInTalentIntegralRecords= wechatIntegralServicegetUserSignInTalentIntegralRecords(usergetId());        int size = signInTalentIntegralRecordslength;        int[] talentIntegralRecordsDay = new int[size];

Long[] talentIntegralRecordsIntegral = new Long[size];        for(int i=0;i<signInTalentIntegralRecordslength;i++){

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

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

}

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

mapput("talentIntegralRecordsDay", JSONtoJSONString(talentIntegralRecordsDay));

mapput("talentIntegralRecordsIntegral", JSONtoJSONString(talentIntegralRecordsIntegral));        return new ModelAndView("wechat/integralParadise/rili",map);

}

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

<script type="text/javascript">

$(document)ready(function(){

windowtalentIntegralRecordsDay = ${talentIntegralRecordsDay};

windowtalentIntegralRecordsIntegral = ${talentIntegralRecordsIntegral};

});</script>

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

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

var dateArray = windowtalentIntegralRecordsDay;// 假设已经签到的

var talentIntegralRecordsIntegral = windowtalentIntegralRecordsIntegral;        var $dateBox = $("#js-qiandao-list"),

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

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

_html = '',

_handle = true,

myDate = new Date();

$currentDatetext(myDategetFullYear() + '年' + parseInt(myDategetMonth() + 1) + '月' + myDategetDate() + '日');        var monthFirst = new Date(myDategetFullYear(), parseInt(myDategetMonth()), 1)getDay();        var d = new Date(myDategetFullYear(), parseInt(myDategetMonth() + 1), 0);        var totalDay = dgetDate(); //获取当前月的天数

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

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

}

$dateBoxhtml(_html) //生成日历网格

var $dateLi = $dateBoxfind("li");        for (var i = 0; i < totalDay; i++) {

$dateLieq(i + monthFirst)addClass("date" + parseInt(i + 1));            for (var j = 0; j < dateArraylength; j++) {                if (i == dateArray[j]) {

$dateLieq(i)addClass("qiandao");                    var integral;                    if(talentIntegralRecordsIntegral[j]==0){

integral="大转盘";

}else{

integral="+"+talentIntegralRecordsIntegral[j];

}

$dateLieq(i)find("div")text(integral);

}

}

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

$("date" + myDategetDate())addClass('able-qiandao');

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

$(this)addClass('qiandao');

qiandaoFun();

}

var d = JSONparse(data);

首先你把data对象化,然后通过dpageTotalNums等直接获取

按照你这个,如果你要获取的是orders里面的内容的话,你要先

var o=dorders;

然后再each循环获取里面的

以上就是关于使用el表达式获取request中map值的问题全部的内容,包括:使用el表达式获取request中map值的问题、js 数组 map方法、JS数据类型之Map等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9610077.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存