我正在使用 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 会话范围(或者,如果您使用 Seam 或类似的,会话范围),以便两个页面简单地共享一个 bean。这可能是最简单的,但您需要确保在不再需要 bean 时清理它,因此有点危险。
第三,您可以使用常规 HTTP 表单并 POST 到图表页面,使用与第一个相同类型的 RequestParameterMap 疏浚。这与第一个的工作方式相同,但并不像您想要执行此操作的任何地方都需要类似的表单那样干净,并且它不能是普通的超链接。
这三个将完成你所需要的,但我的建议还是第一。能够仅使用常规超链接链接到图表页面可能会非常方便。
以及如何传递对象而不是字符串?