【问题标题】:JSF View Scoped bean survives redirect to JSPJSF View Scoped bean 在重定向到 JSP 后仍然存在
【发布时间】:2012-04-27 06:32:10
【问题描述】:

我有一个应用程序在页面上执行一些 ajax 更新并使用 @ViewScoped ManagedBean。 当用户提交表单时,我的操作方法重定向到 Jsp 以使用 Cewolf 库显示图表。 它工作正常,但似乎 bean 在这个重定向中幸存下来。如果用户单击 Jsp 上的后退按钮,则所有“rendered 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 时,我的 bean 会死掉并且表单是新鲜的,如果 用户点击后退按钮。我已经尝试了一个过滤器来禁用缓存,但它的行为非常奇怪。此外,我没有使用 Jsp 标记,仅使用 facelets,并且某些组件具有“rendered”属性,具体取决于我的 bean 状态。我应该发布整个 .xhtml,但它有点大......

感谢有人能帮助我理解这种行为!

【问题讨论】:

  • 很遗憾,我帮不了你。但是,如果您不使用它的“标签”,为什么还要使用 .jsp。首先,您谈论的是重定向到 .jsp,然后是发布整个 .xhtml。我很迷茫。为什么将 facelets 与 jsps 混合使用? Facelets 要好得多,所以摆脱 JSP。
  • 因为 Cewolf 库使用 .jsp 标签运行,我需要它们来渲染图表。
  • 您是否尝试将您的 bean 更改为请求范围?
  • 不,我有 ajax、验证和字段转换,请求范围不起作用。

标签: ajax jsp jsf redirect


【解决方案1】:

刚刚找到了一个更好的解决方案:使用 Primefaces,它不支持 XY 图表,但与 JFreeChart 集成。

还是谢谢!

【讨论】:

    猜你喜欢
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 2012-11-19
    • 1970-01-01
    相关资源
    最近更新 更多