使用CommandLink在JSF中显示值

时间:2012-12-27 14:43:22

标签: jsp jsf java-ee javabeans commandlink

我正在JSF中创建一个CRUD应用程序。enter image description here 我使用过MovieName和RespectiveID .Moviename是CommandLink标签。现在我想要如果有人点击电影就会显示相应电影的细节。如果它是PHP,我可以轻松追加ID parameter中的movieDetail.php?id=12并使用它来查询DB.But就我所知,在JSF中我们使用actionLIstener并为它调用bean函数。 我不知道我会在bean函数中写什么,除了查询以显示结果..任何人都可以帮助我这个 感谢

2 个答案:

答案 0 :(得分:1)

创建视图movieDetail.jsf并在输出影片名称时通过附加影片ID来创建链接。例如movieDetail.jsf?id = 12。

在movieDetail.jsf中添加<f:viewParam>标记并将id值设置为bean属性。然后添加

<f:event type="preRenderView" listener="#{bean.listener}">并使用电影详细信息填充bean。

在呈现视图之前触发了

preRenderView事件。所以,这是用电影细节填充bean的最佳时机。在preRenderView事件中,listener方法将使用id属性来查询数据库并查找电影的详细信息。

在movieDetail.jsf中使用<f:metadata>内的两个标签:

<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属性。在呈现视图之前,调用了监听器方法,即在这种情况下调用了bean public void listener(),它用电影细节填充bean。

答案 1 :(得分:0)

你应该肯定使用单独的JSF页面,如Sandeep建议的那样,但我认为你可能会受益于使用数据表来显示电影列表。查看此link有关如何使用它们的信息。

您应该创建一个简单的类,其中包含您希望在列表中显示的每部电影的数据类型(名称和ID)。然后,您可以创建这些对象类型的List,并使用该列表填充数据表。然后使用binding属性,可以将数据表绑定到辅助bean中的HtmlDataTable对象,并获取对用户单击的行的引用。在处理用户单击的方法中,您可以设置指定影片所需的数据,并返回用于显示单个影片的视图名称。