我有一个通过 Datatable (Primefaces 3.4.2) 显示的数据库表,我想在标题中显示一个组合过滤器,其中填充了数据库表本身的值。
1) 由于这些值不是 PK 或 FK,我构建了一个命名查询来检索 prefDep 列的不同值:
@NamedQuery(name = "Upb.findPrefDeps", query = "SELECT DISTINCT u FROM Upb u WHERE u.prefDep = :prefDep")
2)在我的抽象控制器中:
public List<T> getPrefDepsList() {
if (prefDeps == null) {
prefDeps = this.ejbFacade.findPrefDeps();
}
return prefDeps;
}
3) 当我注入外观 EJB 时,如何构建一个托管 bean 属性以在下面的 filterOption 中使用?托管Bean:
@ManagedBean(name = "upbController")
@ViewScoped
public class UpbController extends AbstractController<Upb> implements Serializable {
@EJB
private UpbFacade ejbFacade;
public UpbController() {
super(Upb.class);
}
@PostConstruct
public void init() {
super.setFacade(ejbFacade);
}
public SelectItem[] getPrefDepOptions() {
return prefDepOptions; //build/populate this
}
}
jsf:
<p:column filterBy="prefdep" headerText="PrefDep"
filterOptions="#{upbController.prefDepOptions}"
filterMatchMode="exact">
<h:outputText value="#{item.prefDep}" />
</p:column>
提前致谢。