我有一个jsp页面(日历),里面有很多JSTL标签。 我在我的servlet中设置属性,并通过JSTL,EL获取它们在我的jsp页面中。
当我按下周期时,我打开一个xmlhttp,它将GET发送到我的servlet(Ajax)。 所有属性都更新,所以我想在我的jsp页面中再次获取它们。 由于性能延迟,我不想将servlet分派到我的jsp页面。 我不想获取servlet结果,因为它们是属性。
我只是想刷新我的JSTL& EL因此他们将获得新值(无需刷新页面)。
这是一种不合逻辑的思维方式吗?但无论如何,我如何刷新我的JSTL,EL,scriptlet以便出现新值?
答案 0 :(得分:3)
我只是想刷新我的JSTL& EL因此他们将获得新值(无需重新翻页)
这是不可能的。请注意,EL和JSTL在视图构建时在服务器端运行,因此一旦在生成服务器响应时应用它们,它们就不能在页面中更新,直到服务器使用view(基本上,你的JSP使用JSTL,EL和其他组件) 1 。
您应该查看对您的servlet(或您正在使用的控制器)的AJAX请求,并可能处理JSON响应以解决JSP页面的行为。
更多信息:
1 Scriptlet也属于服务器端类别,但我省略了它们,因为您不应该在现代Java Web开发中强烈建议不要使用它们。更多信息How to avoid Java code in JSP files?
答案 1 :(得分:1)
HttpServlets,JSP,JSTL,EL和scriptlet都是服务器端组件,即。在服务器上执行以生成HTTP响应。 Javascript和AJAX是客户端组件,即。处理返回的HTTP响应。
你不能刷新我的JSTL& EL 在客户端,因为它们根本就不存在。
一种可能的(和常见的)解决方案是让您使用AJAX生成的请求生成一个JSON响应,您可以使用该响应来填充/替换您之前已使用EL设置值的HTML元素。