0

Datatable (Primefaces 3.4.2) を介して表示されるデータベース テーブルがあり、データベース テーブル自体からの値が入力されたヘッダーに、comboFilter を表示したいと考えています。

1) これらの値は PK または FK ではないため、prefDep 列の個別の値を取得する名前付きクエリを作成しました。

@NamedQuery(name = "Upb.findPrefDeps", query = "SELECT DISTINCT u FROM Upb u WHERE u.prefDep = :prefDep")

2) 私の AbstractController で:

public List<T> getPrefDepsList() {
  if (prefDeps == null) {
    prefDeps = this.ejbFacade.findPrefDeps();
    }
      return prefDeps;
}

3) ファサード EJB を注入するときに、以下の filterOption で使用されるマネージド Bean プロパティを構築するにはどうすればよいですか? マネージ 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>  

前もって感謝します。

4

1 に答える 1

0

あなたの質問を正しく理解しているかどうかわかりません。名前付きクエリを 1 回実行し、個別の値をマネージド Bean のプロパティに格納しますか? そのために、ページをレンダリングする前に呼び出される PreRenderView イベントを使用できます。init-function を呼び出して、このイベントでそのような値をロードできます。

名前付きクエリを使用して getter にアクセスすることもできますが、これは 1 回だけではありません。

于 2013-11-07T00:15:58.117 に答える