Ste*_*eve 2 jsf hyperlink managed-bean
我有一个包含数据表的页面.我希望表中的一些项链接到相应的视图页面.
例如,现在我有一个没有链接的表:
<h:dataTable var="bean" value="#{beanServiceImpl.beans}" border="1">
<h:column>#{bean.id}</h:column>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)
我想添加一些条目的超链接,并让它们转到一个视图页面,根据它们的ID显示更多信息:
<h:dataTable var="bean" value="#{beanServiceImpl.beans}" border="1">
<h:column>
<a href="viewBean.xhtml?id=#{bean.id}">#{bean.id}</a>
</h:column>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)
ViewBean.xhtml将包含以下内容:
ViewBean.xhtml
<ul>
<li>ID: #{bean.id}</li>
<li>Field 1: #{bean.field1}</li>
<li>Field 2: #{bean.field2}</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我如何在JSF中完成这样的事情?我知道我必须编写一个控制器来查询其他字段的id.但是,如何使viewBean.xhtml运行业务逻辑以获取其他字段并进行渲染?
BalusC的答案几乎是好的,但不起作用(编辑:它现在有效).
您已经知道,如何将值添加到参数中.顺便说一句,如果我是你,我不会使用<a href>,而是:
<h:link outcome='viewBean'>
<f:param name='id' value='#{bean.id}' />
</h:link>
Run Code Online (Sandbox Code Playgroud)
现在你必须选择捕捉价值.最简单的方法是在id属性上添加注释:
@ManagedProperty("#{param.id}") // this will inject id from param into id
private Long id;
// (getters and setters are obligatory)
@PostConstruct // this will execute init() after id is injected
public void init() {
}
Run Code Online (Sandbox Code Playgroud)
最后一件事:拥有一个名为"bean"的变量没有比将其称为"变量"更有意义(或者有一只名为Dog和cat的狗名为Cat).它没有信息,更糟糕的是,它使你的应用程序中的所有bean都难以区分(除非你建立一个豆类经理).
| 归档时间: |
|
| 查看次数: |
4851 次 |
| 最近记录: |