我有一个报告页面,提交用户生成的数据检索查询。当查询没有数据时,我向会话添加了facesmessage-“No data”并将其与提交按钮关联,因此,它会显示在按钮旁边。 当用户修改查询并重新提交时,我希望清除“无数据”消息。我找不到办法做到这一点。我在sessionmap或requestmap中找不到任何消息,所以我无法使用removemessage()。 所以,暂时我通过将facesmessages设置为空白摘要和细节来使用hack。如何清除提交的每个查询的消息?
感谢。
BalusC,
无法找到回复按钮,因此我正在编辑原始帖子
这就是我所拥有的: JSF 1.2, Richfaces 3.3
我的报告页面的支持bean是sessioncoped。该页面有一个下拉菜单,用于选择报告类型和一个连接到动作的提交按钮(genrep)。该按钮与rich:message标签相关联。
当选择并提交报告类型时,genrep()检查数据库以查看是否有任何数据,如果不存在,则实例化facesmessage,设置摘要&详细信息为“无数据”,并通过facescontext的addmessage方法将其添加到提交按钮。
当用户提交另一个包含数据的查询时,genrep()从facescontext获取响应流,将内容类型设置为“application / vnd.ms-excel”并将数据写入其中。关闭&刷新流并调用responsecomplete()。除了现在我仍然看到前一个无数据查询按钮旁边的“无数据”消息。
感谢。
答案 0 :(得分:0)
当用户提交另一个包含数据的查询时,genrep()从facescontext获取响应流,将内容类型设置为“application / vnd.ms-excel”并将数据写入其中。关闭&刷新流并调用responsecomplete()。除了现在我仍然看到上一个无数据查询按钮旁边的“无数据”消息。
因此,您提供了文件下载,但您也希望当前页面也能刷新。由于HTTP的性质,这是不可能的。您不能在单个请求上发回两个响应(一个用于文件下载,另一个用于新页面)。最好的办法是让客户端发送两个请求或使用onclick
属性中的一行JavaScript来隐藏消息。后者更适合这种特殊情况。