【发布时间】:2010-11-04 02:17:53
【问题描述】:
我正在使用 JSF/ICEFaces。我有一个包含许多行的表格,我有另一个显示图表的页面。我想在每一行都有一个图标来绘制该特定组合的图表。我知道通过返回字符串导航规则来使用 JSF 进行常规导航。但是,我不确定如何将参数从与该行对应的 bean 传递给绘制图表的 bean。你知道我可以解决这个问题吗?
谢谢,
谭
【问题讨论】:
我正在使用 JSF/ICEFaces。我有一个包含许多行的表格,我有另一个显示图表的页面。我想在每一行都有一个图标来绘制该特定组合的图表。我知道通过返回字符串导航规则来使用 JSF 进行常规导航。但是,我不确定如何将参数从与该行对应的 bean 传递给绘制图表的 bean。你知道我可以解决这个问题吗?
谢谢,
谭
【问题讨论】:
因此,您的页面 A 带有材料表,页面 B 带有单个材料的图表。流程是:导航到页面 A -> 浏览表格 -> 单击页面 A 上的某些内容以查看图表 -> 导航到页面 B -> 阅读图表。
您可以在这里做一些不同的事情。我会推荐三个。
一,您可以将图表页面设为 RESTful,并传入您要绘制图表的内容的 ID。 IE,您页面上的一列将具有:
<ice:outputLink value="/chartPage?stuffID=#{iterator.stuffID}">Review Chart</ice:outputLink>
那么在你的图表页面的backing bean中你可以使用JAX-RS来传入页面参数也可以疏通请求对象,即:
(
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("stuffID)
您可以使用它来获取 StuffID 并构建图表。这实现了良好的关注点分离,让您的图表页面只做图表,而不必担心它将从哪些 bean 中获取图表。这是我个人会这样做的方式。
二,您可以简单地使您的 bean 会话范围(或者,如果您使用 Seam 或类似的,则对话范围),以便两个页面简单地共享一个 bean。这可能是最简单的,但您需要确保在不再需要 bean 时将其清理干净,因此有些危险。
三,您可以使用常规 HTTP 表单并 POST 到图表页面,使用与第一个相同类型的 RequestParameterMap 疏浚。这与第一条的工作方式相同,但并不像您在任何地方都需要类似的表格那样干净,而且它不能是普通的超链接。
这三个可以满足您的需求,但我的建议还是第一。能够使用常规超链接链接到图表页面可能会非常方便。
【讨论】:
以及如何传递对象而不是字符串?
【讨论】: