3

我可以使用${session.name}. 有没有办法使用表达式语言在 JSP 中设置值?我不是在问使用<c:set>标签。

${param.name}
${session.name}
${request.hhh} 

我们以这种方式获取值,我们可以使用相同的方式设置这些值吗?

请举例说明。

4

5 回答 5

3

EL 语法是有意为之的,它旨在显示和格式化数据,而不是更改数据。这样做的原因是鼓励使用 MVC 方法,在这种方法中,在显示任何内容之前已经处理了业务逻辑。它还具有易于学习的优点,即使对于非程序员也是如此。

<c:set>是这样做的方法。EL 没有等价物。

于 2013-08-08T20:04:28.253 回答
2

这只有在使用=运算符的 EL 3.0(于 2013 年 5 月在 Java EE 7 中引入)之后才有可能。

${param.name = "123"}
${session.name = "abc"}
${request.hhh = "xyz"}
于 2016-11-18T15:29:57.900 回答
1
${myVariable = "666" ; ""}

EL 3.0 规范第 1.14 节:

分号运算符 -A ; B

分号运算符的行为类似于 C 中的逗号运算符。要评估A;B,A首先评估它的值,然后丢弃它的值。 B然后评估并返回其值。

因此,我们评估一个分配,丢弃该结果并评估并返回一个空字符串。

于 2018-09-19T11:26:25.687 回答
0

标准 JSP/JSTL 特性支持 3 种方式来设置 bean 属性或 Map 的值。

  1. c:set (对于 java bean 和 java map )
  2. jsp:setProperty(仅适用于 java bean 属性。不是 MAP)
  3. jsp无脚本(在jsp中编写java代码)
于 2013-12-26T15:48:45.733 回答
0

这里开始:EL 3.0(JSR 341,Java EE 7 的一部分)代表了 EL 2.2 的重大提升。EL 3.0的主要特点如下:

New operators +, =, and ;

Lambda expressions

Collection objects support

An API for standalone environments

使用赋值运算符

在 x = y 类型的表达式中,赋值运算符 (=) 将 y 的值赋给 x。为了避免 PropertyNotWritableException 类型的错误,x 值必须是左值。以下示例向您展示了如何在两个简单的表达式中使用此运算符:

#{x = 3} evaluates to 3

#{y = x + 5} evaluates to 8

赋值运算符是右结合的(z = y = x 等价于 z = (y = x))。例如,#{z = y = x + 4} 的计算结果为 7。

于 2020-09-22T07:18:17.857 回答