параметр: неявный объект EL (язык выражений) в JSP - PullRequest
6 голосов
/ 15 июня 2010

Что если у меня есть URL вроде: servlet.jsp?myparam=myvalue

Эти 2 EL должны возвращать вывод "myvalue" , но я на самом деле не понимаю, почему?

${param.values["myparam"]["0"]}
${param.values.myparam[0]}

1 Ответ

20 голосов
/ 15 июня 2010

Откуда вы взяли эту информацию? Это не будет работать в стандартном 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]}
...