参数:JSP中隐式EL(表达式语言)对象

7

如果我的URL像这样:servlet.jsp?myparam=myvalue

这两个EL表达式应该返回"myvalue",但我实际上不明白为什么:

${param.values["myparam"]["0"]}
${param.values.myparam[0]}
1个回答

21

你获取这个信息的来源是哪里?这在标准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]}

谢谢回答。我也是这么想的。 这实际上是uCertify PrepEngine软件为SCWCD提供的一个“正确”答案。我只是想确保并听取一些意见。 - matus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接