显示详细信息页面的最佳方式是什么

时间:2015-01-06 13:04:18

标签: jsf jsf-2

上下文

用Java Server第2页编写的旧系统。

问题

我有一个托管bean,它向页面(StudentListBean)提供学生列表(student-list.xhtml)。这个bean不提供对单个学生的访问,因为它的目标是生成学生列表,并且它正在为此目的正常工作。每个学生都显示在一个数据表中,沿着学生集合进行迭代。

有些学生有一定的条件可能需要显示一些细节。在这些情况下,会提供一个链接,以便用户可以单击并查看这些详细信息。

当必须显示链接时,链接是正确构建的,但由于这些细节可能非常大,因此应在浏览器的另一个选项卡中显示,而不是显示列表的同一个选项卡。因此,新页面将显示来自单个学生的数据。

由于StudentListBean不会公开单个学生,因此不能用于显示单个学生的数据。改变它的行为被认为是一个糟糕的选择,因为bean打算管理一组学生,而不是一个学生。将创建一个新bean(StudentBean)以提供对单个学生的所有详细信息的访问。

这里的问题是:如何将学生的Id(列表中的当前版本)传递给StudentBean,以便学生可以从Id加载学生等等它的数据可以显示在另一页(student.xhtml)?

由于StudentListBean不需要进行任何互动,因此链接是使用<h:link/>代码构建的,因为有些在线消息来源认为这是<h:commandLink/>更有效的选择。

提前致谢!

1 个答案:

答案 0 :(得分:0)

您可以向<f:param>组件添加<h:link>,该组件将保留id的{​​{1}}。 (假设您的Student组件具有设置dataTable属性)

var="student"

然后,为了检索托管bean中传递的<h:link value="Your link text" outcome="the address you want to open" target="_new"> <f:param name="studentId" value="#{student.id}" /> </h:link> ,你必须这样做:

id