EL将优先考虑哪个属性:较大范围的属性或稍后设置的属性?

时间:2016-02-11 06:52:45

标签: jsp session request el

我在其中一个JSP中有以下JSTL标记:

<c:forEach items="${customerList}" var="cust" varStatus="current">

customerList 已在2个不同的JAVA文件中设置为会话和请求属性:

首先调用JAVA文件1,其中包含以下代码:

WebUtils.setSessionAttribute(request, "customerList", VAR1);

之后调用JAVA file2,其中包含:

request.setAttribute("customerList", VAR2);

然后,调用JSP,如最初所述,引用 customerList 。现在我的问题是,JSP是否将customerList值作为VAR1或VAR2?

我认为将VAR1设置为更大的范围,即“会话”与“请求”相比;即使稍后设置了request属性。

您怎么看?

提前致谢!!

1 个答案:

答案 0 :(得分:0)

理论上,两个值都会持续存在,直到您在同一会话下提供相同的请求。

因为虽然您使用相同的密钥,即&#39; customerList&#39;它的范围是不同的(会话和请求),这意味着在内部创建了2个不同的变量(不完全相同,但为了清楚起见:) :)。

因此,这取决于你,你打电话给谁。 如果调用WebUtil.getSessionAttribute,那么VAR1将是输出,如果是request.getAttribute(),则VAR2将是输出。

我还没有测试过它。