2008年11月27日木曜日

RAD v7.5 試用版 を使ってJSFとEJB3.0・・・(9)

今度はテーブルの内容を一覧表示します。

■EJB(MySampleSession)に一覧(java.util.List)を取得するメソッドを追加します。
    // List<MySample>のwarningを抑止しています。それ以外は来ないはずなので。
@SuppressWarnings("unchecked")
public List<MySample> listMySamples() throws MySampleException {
Query query = em.createQuery("select m from MySample m");
List<MySample> result = query.getResultList();
return result;

}

■Webプロジェクト(MySampleJSF)に、新規にListBeanを追加します。
package test.beans;

import java.util.List;

import javax.ejb.EJB;

import test.MySample;
import test.MySampleSessionLocal;

public class ListBean {
private static final long serialVersionUID = 1L;
/*
* JPA直は好きじゃないのですが今回はこれで。
*/
List<MySample> mySamples = null;

@EJB(name="MySample")
private MySampleSessionLocal mySampleSession;

public List<MySample> getMySamples() {
// nullチェックでは厳密にインスタンスの生成を制御できませんが、
// まあ二回くらい呼ばれたっていいでしょう
if (mySamples == null) {
try {
List<MySample> tmpList = mySampleSession.listMySamples();
setMySamples(tmpList);
} catch (Exception e) {
//
}
}
return mySamples;
}

private void setMySamples(List<MySample> mySamples) {
this.mySamples = mySamples;
}
}

■faces-config.xmlにmanagedBean要素を追加します。
  <managed-bean>
<managed-bean-name>listBean</managed-bean-name>
<managed-bean-class>test.beans.ListBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>

■list.jspを新規に作成します。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><%@page
language="java" contentType="text/html; charset=windows-31j"
pageEncoding="windows-31j"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %><html>
<head>
<title>list</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
</head>
<body>
<h2>リスト MySample</h2>
<f:view>
<h:dataTable value="#{listBean.mySamples}" var="item" border="1">
<h:column>
<f:verbatim>id: </f:verbatim>
<h:outputText value="#{item.myid}"/>
</h:column>
<h:column>
<f:verbatim>value: </f:verbatim>
<h:outputText value="#{item.myFlag}"/>
</h:column>
</h:dataTable>
</f:view>
</body>
</html>

今度は一覧表示にラジオボタンを追加したいのですが、これが大変なのです(<h:dataTable ..>と<h:selectOneMenu...>は入れ子にできないため・・・)。次回以降で挑戦してみます。

以上
.

0 件のコメント: