这是我所拥有的
<h:inputTextarea id="comment" rows="3" cols="50" value="#{bean.comment}" /><br/>
<p:commandButton value="Comment" actionListener="#{bean.postMessage}" update="comment"/>
so postMessage()
持久化数据,然后将注释的值设置为空,如下所示
comment.setComment("");
工作得很好。当我按下按钮时,消息被发布,文本被清除。但奇怪的是,当我单击刷新时,该消息又出现在inputTextArea
(它不会被发布,只是重新出现在文本框中)。有没有办法来解决这个问题?
P/S:我想要一个ajax解决方案的原因是为了避免用户单击提交按钮后,然后点击刷新,导致同一条消息将被发布两次.
这是特定于网络浏览器的。其中,Firefox 暴露了这种行为。该页面是从浏览器缓存请求的,任何表单数据以及“上次输入的”数据都来自浏览器缓存。
为了解决这个“问题”,您需要禁用动态 JSF 请求的浏览器缓存。最简单的是创建一个Filter http://download.oracle.com/javaee/6/api/javax/servlet/Filter.html其注释为@WebFilter(servletNames={"facesServlet"})
(where facesServlet
is the <servlet-name>
of the FacesServlet
定义如下web.xml
)并且基本上包含以下内容doFilter()
method:
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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)