我正在使用 JSF/ICEFaces。我有一个包含许多行值的表,还有另一个显示图表的页面。我想在每一行都有一个图标来绘制特定组合的图表。我知道通过返回字符串导航规则来使用 JSF 进行常规导航。但是,我不确定如何将参数从与行对应的 bean 传递到执行图表的 bean。你知道我可以解决这个问题吗?
谢谢
谭
最佳答案
因此,页面 A 包含内容表,页面 B 包含各个内容的图表。流程是:导航到页面 A -> 查看表格 -> 单击页面 A 上的某些内容以查看图表 -> 导航到页面 B -> 阅读图表。
您可以在这里执行几项不同的操作。我会推荐三个。
一,您可以使图表页面 RESTful 并传入您要绘制图表的内容的 ID。 IE,您页面上的一栏将包含:
<ice:outputLink value="/chartPage?stuffID=#{iterator.stuffID}">Review Chart</ice:outputLink>
然后在图表页面的支持 bean 中,您可以使用 JAX-RS 传入页面参数,也可以挖掘请求对象,即:
(
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("stuffID)
您可以使用它来获取 StuffID 并构建您的图表。这实现了良好的关注点分离,让您的图表页面只做图表,而不必担心将从哪些 bean 获取图表。这就是我个人会采取的方式。
二,您可以简单地设置您的 Bean session 范围(或者,如果您使用 Seam 或类似工具,则设置对话范围),以便两个页面简单地共享一个 Bean。这可能是最简单的,但您需要确保当您不再需要 bean 时将其清理干净,因此有些危险。
第三,您可以使用常规 HTTP 表单并 POST 到图表页面,使用与第一条相同的 RequestParameterMap 挖掘。这与第一个方法的工作方式相同,但不太干净,因为您在任何想要执行此操作的地方都需要类似的表单,并且它不能是普通的超链接。
这三个可以满足您的需求,不过,我的推荐将是第一。能够仅使用常规超链接链接到图表页面可能会非常方便。
关于java - 如何使用 ICEFaces 进行导航并传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1014248/