Java 在不刷新页面的情况下重新加载JSTL、EL和Scriptlet
我有一个jsp页面(日历),里面有很多JSTL标记。 由于JSTL,EL,我在servlet中设置属性并在jsp页面中获取它们 当我按下nextweek时,我打开一个xmlhttp,它向我的servlet(Ajax)发送一个GET。 我的所有属性都会更新,所以我想在jsp页面中再次获取它们。 由于性能延迟,我不想将servlet分派到我的jsp页面。 我不想获取servlet结果,因为它们是属性 我只想刷新我的JSTL&EL,这样他们就可以得到新的值(而不用刷新页面)Java 在不刷新页面的情况下重新加载JSTL、EL和Scriptlet,java,jsp,servlets,jstl,el,Java,Jsp,Servlets,Jstl,El,我有一个jsp页面(日历),里面有很多JSTL标记。 由于JSTL,EL,我在servlet中设置属性并在jsp页面中获取它们 当我按下nextweek时,我打开一个xmlhttp,它向我的servlet(Ajax)发送一个GET。 我的所有属性都会更新,所以我想在jsp页面中再次获取它们。 由于性能延迟,我不想将servlet分派到我的jsp页面。 我不想获取servlet结果,因为它们是属性 我只想刷新我的JSTL&EL,这样他们就可以得到新的值(而不用刷新页面) 这是一种不合逻辑的思维方式
这是一种不合逻辑的思维方式吗?但是无论如何,我如何刷新我的JSTL、EL、Scriptlet以显示新的值呢?HttpServlets、JSP、JSTL、EL和Scriptlet都是服务器端组件,即在服务器上执行以生成HTTP响应。Javascript和AJAX是客户端组件,即处理返回的HTTP响应 您无法在客户端刷新我的JSTL&EL,因为它们根本不存在
一种可能的(也是常见的)解决方案是让您使用AJAX发出的请求生成一个JSON响应,您可以使用该响应填充/替换HTML元素,您的EL以前用于设置值。HttpServlets、JSP、JSTL、EL和Scriptlet都是服务器端组件,即在服务器上执行以生成HTTP响应。Javascript和AJAX是客户端组件,即处理返回的HTTP响应 您无法在客户端刷新我的JSTL&EL,因为它们根本不存在 一个可能的(也是常见的)解决方案是让您使用AJAX发出的请求生成一个JSON响应,您可以使用该响应填充/替换HTML元素,而EL以前用于设置值 我只想刷新我的JSTL&EL,这样他们就可以得到新的值(无需重新格式化页面) 这是不可能的。请注意,EL和JSTL在视图构建时在服务器端运行,因此一旦在生成服务器响应时应用了它们,就无法在页面中更新它们,直到服务器使用视图生成新内容(基本上,是包含JSTL、EL和其他组件的JSP)1 您应该研究对servlet(或您正在使用的控制器)的AJAX请求,并可能处理JSON响应以解决JSP页面的行为 更多信息:
1 Scriptlet也属于服务器端类别,但我省略了它们,因为您不应该因为在现代Java web开发中使用Scriptlet而非常气馁而使用它们。更多信息我有一个@RobinHo,正如我在回答和SotiriosDelimanolis中所说,不可以。在没有类似页面刷新行为的情况下重新生成它的唯一方法是通过向服务器发出ajax请求并处理更新DOM的响应。@RobinHo注意,有一些Java web应用程序框架,如JSF 2.0,实现了ajax并帮助用户轻松完成此类工作。@RobinHo补充了Luiggi刚才所说的内容。您可以返回(受控)HTML并附加(或完全替换)DOM的某些部分,而不是在响应中返回JSON。@SotiriosDelimanolis我不建议这样做,因为它打破了MVC模式:让视图处理视图逻辑(HTML DOM、JavaScript动画、应用CSS、图像渲染等),让控制器处理控制器逻辑。我有一个@RobinHo,正如我在回答和SotiriosDelimanolis中所说,不可以。在没有类似页面刷新行为的情况下重新生成它的唯一方法是通过向服务器发出ajax请求并处理更新DOM的响应。@RobinHo注意,有一些Java web应用程序框架,如JSF 2.0,实现了ajax并帮助用户轻松完成此类工作。@RobinHo补充了Luiggi刚才所说的内容。您可以返回(受控)HTML并附加(或完全替换)DOM的某些部分,而不是在响应中返回JSON。@SotiriosDelimanolis我不建议这样做,因为它打破了MVC模式:让视图处理视图逻辑(HTML DOM、JavaScript动画、应用CSS、图像渲染等),让控制器处理控制器逻辑。