JSF/Mojarra "flash scope"问题



我有一个在Mojarra 2.1.1/Glassfish 3.1上运行的应用程序,现在已经增长到150000+代码行。该应用程序在ViewScoped托管bean和页面重定向获取模式(即faces redirect=true)。

有一件事一直困扰着我,那就是明显的不易通过参数从一个页面到另一个页面,从bean到bean(每个页面都有自己的backingbean)。

我一直没能让闪光灯工作。我通常需要访问写入下一页的preRenderView事件侦听器中的flash。这不是工作可靠,尤其是在应用程序重新部署之后。

我已经阅读了CDI,并花了几天时间尝试从JSF管理的bean迁移到CDI bean,但无法使其工作。似乎有很多兼容性问题接缝3和Glassfish 3.1之间。我将Weld升级到1.1.1,但这无济于事。从…起从我的角度来看,它现在不起作用。例如,当我说不起作用时我有一个页面试图将h:inputText转换为backingbean中的String,但这并没有工作,非常简单的事情。

由于我遇到的CDI问题,我无法使用RenderScoped中的接缝面一个非常简单的测试应用程序(甚至在g/f3.1上)正是我想要的,但在复杂的主应用程序。

目前我能找到的唯一可靠的机制是URL参数,它是安全噩梦。尽管已尽一切努力确保对数据的访问经过适当身份验证后,总会有缺失和看到的变化…xhtml?id=51031或浏览器中的任何内容都让一些人难以抗拒尝试其他id。我写了一个模糊转换器来避免明文为名称/值对使用有意义的名称,但这不会到达问题

我只是想知道我是否遗漏了什么,其他人都有有效的解决方案吗甚至在玻璃鱼上?我是不是太担心了,应该坚持使用URLparams?还有其他建议吗?

谢谢。

我也看到了同样的情况。在我尝试的时候,Seam3非常有缺陷,很难将其部署到不同的服务器上。我切换到MyFaces CODI,它从一开始就没有任何问题。在您的情况下,您应该查看@ViewAccessScoped。你可以摆脱所有那些烦人的变通办法。

声明要设置或传递到中的下一个视图的参数

<f:metadata>
    <f:viewParam name="foo" value="#{bean.foo}" />
</f:metadata>

这基本上是在GET请求的更新模型值阶段执行bean.setFoo(request.getParameter("foo"))

如果将includeViewParams=true参数添加到导航结果中,则声明为当前视图的<f:viewParam>的参数将传递到下一个视图。

public String doSomething() {
    // ...
    return "next?faces-redirect=true&amp;includeViewParams=true";
}

(注意:&amp;很重要!&不起作用,因为它对XML无效)

下一个视图应该具有相同的<f:viewParam>,以便在bean中设置它们。等等。

相关内容

  • 没有找到相关文章

最新更新