如果我的网址如下:servlet.jsp?myparam=myvalue
这两个EL应该返回输出“myvalue”,但实际上我不明白为什么?:
${param.values["myparam"]["0"]}
${param.values.myparam[0]}
答案 0 :(得分:20)
您从哪里获得此信息?这在标准JSP 2.1 EL中不起作用。正确的语法是:
${param["myparam"]}
${param.myparam}
在第一个例子中,也允许单引号,实际上更受欢迎。
${param['myparam']}
它甚至可以是任何范围内的另一个EL变量:
${param[myparam]}
实际上,${param}
指的是Map<String, String>
只有数组中的第一个参数值。在理论中,如果它是Map<String, String[]>
且Map
类具有getValues()
方法,则您的语法应该有效。但它没有,它只有values()
方法。您最好的选择是使用${paramValues}
代替Map<String, String[]>
:
${paramValues['myparam'][0]}
${paramValues.myparam[0]}
或直接访问HttpServletRequest#getParameterMap()
:
${pageContext.request.parameterMap['myparam'][0]}
${pageContext.request.parameterMap.myparam[0]}