繁体   English   中英

每次请求后 JSF 清除面临消息

[英]JSF Clearing facesmessage after each request

我有一个报告页面,用于提交用户生成的数据检索查询。 当查询不存在数据时,我向会话添加一个facesmessage-“无数据”并将其与提交按钮相关联,因此它显示在按钮旁边。 当用户修改查询并重新提交时,我希望清除“无数据”味精。 我找不到办法做到这一点。 我在 sessionmap 或 requestmap 中找不到任何消息,所以我无法使用 removemessage()。 因此,暂时我通过将facesmessages设置为空白摘要和细节来使用hack。 如何清除提交的每个查询的味精?

谢谢。


BalusC,

找不到回复按钮,所以我正在编辑原始帖子

这是我所拥有的:JSF 1.2,Richfaces 3.3

我的报告页面的支持 bean 是 sessionscoped。 该页面有一个用于选择报告类型的下拉菜单和一个与操作(genrep)挂钩的提交按钮。 该按钮与rich:message 标签相关联。

选择并提交报告类型时,GenRep()检查数据库以查看是否存在任何数据,如果没有存在它实例化FacesMessage,将摘要和细节设置为“无数据”,并通过AddMessage将其添加到提交按钮面语境法。

当用户提交另一个包含数据的查询时,genrep() 从 facescontext 获取响应流,将 contenttype 设置为“application/vnd.ms-excel”并将数据写入其中。 关闭并刷新流并调用 responsecomplete()。 除了现在,我仍然在上一个无数据查询的按钮旁边看到“无数据”消息。

谢谢。

当用户提交另一个包含数据的查询时,genrep() 从 facescontext 获取响应流,将 contenttype 设置为“application/vnd.ms-excel”并将数据写入其中。 关闭并刷新流并调用 responsecomplete()。 除了现在,我仍然在上一个无数据查询的按钮旁边看到“无数据”消息。

因此,您提供了文件下载,但同时也希望刷新当前页面。 由于 HTTP 的性质,这是不可能的。 您不能对单个请求发送两个响应(一个用于文件下载,另一个用于新页面)。 您能做的最好的事情是让客户端发送两个请求,或者在onclick属性中使用一行 JavaScript 隐藏消息。 后者更适合这种特殊情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM