我有一个应用程序,可以在页面上执行一些ajax更新,并使用@ViewScoped ManagedBean。当用户提交表单时,我的操作方法使用Cewolf库重定向到Jsp以显示图表。它工作得很好,但似乎bean在这次重定向中幸存了下来。如果用户单击Jsp上的后退按钮,则所有“呈现的ajax”字段都为空,但“execute ajax”字段显示以前的值。然后,如果我进行ajax更新,“空白”字段将使用以前的值呈现……
重定向代码:
//save
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
Map<String, Object> sessionMap = externalContext.getSessionMap();
sessionMap.put("integrator", dataSource);
try
{
FacesContext.getCurrentInstance().getExternalContext().redirect("graph.jsp");
} catch (IOException ex)
{
Logger.getLogger(EquationsBean.class.getName()).log(Level.SEVERE, null, ex);
}和一些我的index.xhtml:
<h:selectOneMenu value="#{equationsBean.equationsToSolve}" id="neqs">
<f:selectItems value = "#{equationsBean.eqsChoose}" />
<f:ajax render="equationForm" execute ="neqs" listener="# {equationsBean.equationsSelected}"/>
</h:selectOneMenu>我所期望的是,当我重定向到Jsp时,如果用户单击back按钮,我的bean就会死掉,并且表单是新的。我已经尝试了一个过滤器来禁用缓存,但它的行为非常奇怪。另外,我没有使用Jsp标记,只使用facelets,并且一些componentes根据我的bean状态有“rendered”属性。我应该把整个.xhtml贴出来,但它有点大..。
如果有人能帮我理解这个行为,那就谢谢了!
发布于 2012-04-16 08:19:45
刚刚找到了一个更好的解决方案:使用Primefaces,它不支持XY图表,但与JFreeChart集成。
不管怎样,谢谢你!
https://stackoverflow.com/questions/10165475
复制相似问题