1

我有一个 jsp 页面(日历),里面有很多 JSTL 标记。感谢 JSTL、EL,我在我的 servlet 中设置了属性并在我的 jsp 页面中获取它们。

当我按下下周时,我打开一个 xmlhttp,它将一个 GET 发送到我的 servlet(Ajax)。我所有的属性都更新了,所以我想在我的 jsp 页面中再次获取它们。由于性能延迟,我不想将 servlet 分派到我的 jsp 页面。我不想获取 servlet 结果,因为它们是属性。

我只想刷新我的 JSTL 和 EL,以便他们获得新值(不刷新页面)。

这是一种不合逻辑的思维方式吗?但无论如何,我怎样才能刷新我的 JSTL、EL、scriptlet 以便出现新值?

4

2 回答 2

3

我只想刷新我的 JSTL 和 EL,以便他们获得新值(无需刷新页面)

这是不可能的。请注意,EL 和 JSTL 在视图构建时在服务器端运行,因此一旦在生成服务器响应时应用它们,它们就无法在页面中更新,直到服务器使用视图生成新内容(基本上,您的 JSP 与JSTL、EL等组件)1

您应该查看对您的 servlet(或您正在使用的控制器)的 AJAX 请求,并可能处理 JSON 响应以解决您的 JSP 页面的行为。

更多信息:

1 Scriptlet 也属于服务器端类别,但我省略了它们,因为您不应该使用它们,因为在现代 Java Web 开发中非常不鼓励使用它们。更多信息如何避免 JSP 文件中的 Java 代码?

于 2013-10-02T14:50:20.850 回答
1

HttpServlets、JSP、JSTL、EL 和 scriptlet 都是服务器端组件,即。在服务器上执行以产生 HTTP 响应。Javascript 和 AJAX 是客户端组件,即。处理返回的 HTTP 响应。

您无法在客户端刷新我的 JSTL 和 EL,因为它们根本不存在。

一个可能的(也是常见的)解决方案是让您使用 AJAX 发出的请求生成一个 JSON 响应,您可以使用该响应来填充/替换 HTML 元素,而您的 EL 以前曾用于设置值。

于 2013-10-02T14:48:59.403 回答