你要明白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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)