我正在 JSF 中创建一个 CRUD 应用程序。
我已经使用了 MovieName 和
RespectiveID
.The Moviename 在标签中。CommandLink
现在我希望如果有人点击电影,它将显示相应电影的详细信息。如果是 PHP,我可以轻松附加ID
并parameter
movieDetail.php?id=12
使用它来查询 DB。但是据我所知,在 JSF 中我们使用actionLIstener
并调用了一个 bean 函数。除了查询以显示结果之外,我不知道我会在 bean 函数中写什么......任何可以帮助我的人谢谢
2 回答
创建一个视图 movieDetail.jsf 并在输出电影名称时通过附加电影 ID 创建链接。例如 movieDetail.jsf?id=12 。
在 movieDetail.jsf 添加<f:viewParam>
标签并将 id 值设置为 bean 属性。然后加
<f:event type="preRenderView" listener="#{bean.listener}">
并用电影细节填充 bean。
preRenderView
在视图渲染之前触发事件。因此,这是用电影细节填充 bean 的最佳时机。在 preRenderView 事件中,侦听器方法将使用 id 属性来查询数据库并查找电影的详细信息。
<f:metadata>
在你的 movieDetail.jsf 中使用两个标签:
<f:metadata>
<f:viewParam name="id" value="#{bean.id}"/>
<f:event type="preRenderView" listener="#{bean.listener}"/>
</f:metadata>
当用户访问您的视图时,例如,movieDetail.jsf?id=12,id 值 12 被设置为 bean 的 id 属性。在呈现视图之前,监听器方法,即在这种情况下public void listener()
调用 bean,它用电影细节填充 bean。
正如 Sandeep 建议的那样,您绝对应该使用单独的 JSF 页面,但我认为您可能会受益于使用数据表来显示电影列表。查看此链接以了解如何使用它们。
您应该创建一个简单的类,该类包含您希望在列表中显示的每部电影的数据类型(名称和 ID)。然后,您可以创建这些对象类型的列表并使用该列表填充数据表。然后使用 binding 属性,您可以将数据表绑定到支持 bean 中的 HtmlDataTable 对象,并获取对用户单击的行的引用。在处理用户点击的方法中,可以设置指定影片所需的数据,并返回显示单个影片的视图名称。