gpt4 book ai didi

JSF:使用 ajax 清除 inputTextArea 时出现奇怪的行为

转载 作者:行者123 更新时间:2023-12-04 19:46:19 24 4
gpt4 key购买 nike

这是我的

<h:inputTextarea id="comment" rows="3" cols="50" value="#{bean.comment}" /><br/>
<p:commandButton value="Comment" actionListener="#{bean.postMessage}" update="comment"/>

所以 postMessage() 持久化数据,然后像这样将评论的值设置为空

comment.setComment("");

干得好。当我按下按钮时,消息被发布,文本被清除。但奇怪的是,当我单击刷新时,消息又出现在 inputTextArea 中(它没有发布,只是重新出现在文本框中)。有办法解决这个问题吗?
P/S:我想要一个 ajax 解决方案的原因是为了避免,在用户点击提交按钮后,然后点击刷新,导致相同的消息将被发布两次

最佳答案

这是特定于网络浏览器的。其中,Firefox 暴露了这种行为。该页面是从浏览器缓存中请求的,任何表单数据都来自浏览器缓存以及“最后输入的”数据。

要解决这个“问题”,您希望为动态 JSF 请求禁用浏览器缓存。最简单的是创建一个 Filter 注释为 @WebFilter(servletNames={"facesServlet"}) (其中 facesServlet<servlet-name> 中定义的 FacesServletweb.xml )并且在 doFilter() 中基本上包含以下内容方法:

HttpServletResponse hsr = (HttpServletResponse) response;
hsr.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
hsr.setHeader("Pragma", "no-cache"); // HTTP 1.0.
hsr.setDateHeader("Expires", 0); // Proxies.
chain.doFilter(request, response);

关于JSF:使用 ajax 清除 inputTextArea 时出现奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3728875/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com