显示详细信息页面的最佳方式是什么
What's the best way to show a details page
上下文
在 Java 服务器页面 2.
中编写的遗留系统
问题
我有一个托管 bean,它向页面 (student-list.xhtml
) 提供学生列表 (StudentListBean
)。这个 bean 不提供对单个学生的访问,因为它的目标是生成一个学生列表并且它正在为此目的正确工作。每个学生都显示在一个数据表中,该表沿学生集合迭代。
有些同学有一定的条件,可能需要展示一些细节。在这些情况下,会提供 link 以便用户可以单击并查看这些详细信息。
link 在必须显示时已正确构建,但由于这些细节可能非常大,因此应在浏览器的另一个选项卡中显示,而不是在显示列表的同一个选项卡中显示。因此,新页面将显示来自 单个学生 .
的数据
因为StudentListBean
不暴露单个学生,所以不能用来展示单个学生的数据。改变它的行为被认为是一个糟糕的选择,因为该 bean 打算管理一组学生,而不是单个学生。将创建一个新的 bean (StudentBean
) 以提供对单个学生的所有详细信息的访问。
这里的问题是:如何将学生的 Id
(列表中的当前那个)传递给 StudentBean
,以便它可以从其 Id
加载学生因此它的数据可以显示在另一页中(student.xhtml
)?
由于不需要与 StudentListBean
进行交互,link 是使用 <h:link/>
标记构建的,因为一些在线资源建议它是 <h:commandLink/>
更有效的选择。
提前致谢!
您可以将 <f:param>
添加到 <h:link>
组件,它将包含 Student
的 id
。 (假设你的 dataTable
组件有一个 set var="student"
属性)
<h:link value="Your link text" outcome="the address you want to open" target="_new">
<f:param name="studentId" value="#{student.id}" />
</h:link>
然后,为了在托管 bean 中检索传递的 id
,您必须这样做:
String id = FacesContext.getExternalContext()
.getRequestParameterMap()
.get("studentId");
上下文
在 Java 服务器页面 2.
中编写的遗留系统问题
我有一个托管 bean,它向页面 (student-list.xhtml
) 提供学生列表 (StudentListBean
)。这个 bean 不提供对单个学生的访问,因为它的目标是生成一个学生列表并且它正在为此目的正确工作。每个学生都显示在一个数据表中,该表沿学生集合迭代。
有些同学有一定的条件,可能需要展示一些细节。在这些情况下,会提供 link 以便用户可以单击并查看这些详细信息。
link 在必须显示时已正确构建,但由于这些细节可能非常大,因此应在浏览器的另一个选项卡中显示,而不是在显示列表的同一个选项卡中显示。因此,新页面将显示来自 单个学生 .
的数据因为StudentListBean
不暴露单个学生,所以不能用来展示单个学生的数据。改变它的行为被认为是一个糟糕的选择,因为该 bean 打算管理一组学生,而不是单个学生。将创建一个新的 bean (StudentBean
) 以提供对单个学生的所有详细信息的访问。
这里的问题是:如何将学生的 Id
(列表中的当前那个)传递给 StudentBean
,以便它可以从其 Id
加载学生因此它的数据可以显示在另一页中(student.xhtml
)?
由于不需要与 StudentListBean
进行交互,link 是使用 <h:link/>
标记构建的,因为一些在线资源建议它是 <h:commandLink/>
更有效的选择。
提前致谢!
您可以将 <f:param>
添加到 <h:link>
组件,它将包含 Student
的 id
。 (假设你的 dataTable
组件有一个 set var="student"
属性)
<h:link value="Your link text" outcome="the address you want to open" target="_new">
<f:param name="studentId" value="#{student.id}" />
</h:link>
然后,为了在托管 bean 中检索传递的 id
,您必须这样做:
String id = FacesContext.getExternalContext()
.getRequestParameterMap()
.get("studentId");