7

What if I have URL like: servlet.jsp?myparam=myvalue

These 2 ELs should return output "myvalue" , but I actually don't understand why?:

${param.values["myparam"]["0"]}
${param.values.myparam[0]}
BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
matus
  • 1,483
  • 4
  • 16
  • 19

1 Answers1

21

Where did you get this information from? This won't work in standard JSP 2.1 EL. The correct syntax would be:

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

In the first example, singlequotes are also allowed and actually more preferred.

${param['myparam']}

It can even be another EL variable in any scope:

${param[myparam]}

Actually, the ${param} refers to a Map<String, String> with only the first param value from the array. In theory, if it was a Map<String, String[]> and the Map class had a getValues() method, then your syntax should work. But it doesn't have, it only has a values() method. Your best bet would then be using ${paramValues} instead which refers to a Map<String, String[]>:

${paramValues['myparam'][0]}
${paramValues.myparam[0]}

or accessing the HttpServletRequest#getParameterMap() directly:

${pageContext.request.parameterMap['myparam'][0]}
${pageContext.request.parameterMap.myparam[0]}
BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
  • Thanks for the answer. I thought so. This is actually one "correct" answer from uCertify prepEngine software for SCWCD. I just wanted to be sure and hear some opinions. – matus Jun 16 '10 at 13:14