用Java Server第2页编写的旧系统。
我有一个托管bean,它向页面(StudentListBean
)提供学生列表(student-list.xhtml
)。这个bean不提供对单个学生的访问,因为它的目标是生成学生列表,并且它正在为此目的正常工作。每个学生都显示在一个数据表中,沿着学生集合进行迭代。
有些学生有一定的条件可能需要显示一些细节。在这些情况下,会提供一个链接,以便用户可以单击并查看这些详细信息。
当必须显示链接时,链接是正确构建的,但由于这些细节可能非常大,因此应在浏览器的另一个选项卡中显示,而不是显示列表的同一个选项卡。因此,新页面将显示来自单个学生的数据。
由于StudentListBean
不会公开单个学生,因此不能用于显示单个学生的数据。改变它的行为被认为是一个糟糕的选择,因为bean打算管理一组学生,而不是一个学生。将创建一个新bean(StudentBean
)以提供对单个学生的所有详细信息的访问。
这里的问题是:如何将学生的Id
(列表中的当前版本)传递给StudentBean
,以便学生可以从Id
加载学生等等它的数据可以显示在另一页(student.xhtml
)?
由于StudentListBean
不需要进行任何互动,因此链接是使用<h:link/>
代码构建的,因为有些在线消息来源认为这是<h:commandLink/>
更有效的选择。
提前致谢!
答案 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