[japan-jbug 583] JBoss Seam Excelについて

Back to archive index

Tomohiro Sudo sudou****@yck*****
2009年 6月 11日 (木) 22:27:59 JST


JJBugメンバーの皆様

初めてメールをします。須藤と申します。

現在JBoss&Seamを利用してアプリケーションを作成しています。

Seam Excelを使用してExcelシートにDBの内容を表示しようとしているのですが、
どうしてもうまくいきません。

※環境は以下の通りです。
OS:Win XP SP2
WAS:JBoss4.2.3GA
WF:Seam2.1.1GA
DB:postgreSQL8.3.7

現象としては以下の通りです。

Aテーブル

a(主キー1) |b
---------------
1          |あ
2          |い
3          |う

Bテーブル

a(主キー1) |b(主キー2)|c
------------------------------
1          |0     |か
3          |0     |き
3           |1     |く

※Aテーブルのa項目とBテーブルのa項目は1:0〜1:nの関係

このとき、Aテーブルを基に、Excelに以下のように出力させたいと思っております。

aテーブルのaカラム|aテーブルのbカラム|bテーブルのCカラム
------------------|----------------------------------
1         |あ        |か
2         |い        |
3         |う        |き

ですが、いざExcelに表示しようとすると、以下のようになってしまいます。

(便宜上C)
aテーブルのaカラム|aテーブルのbカラム|bテーブルのCカラム
------------------|----------------------------------
1         |あ        |か
2         |い        |
3         |う        |き
          |あ        |か
          |い        |
          |う        |き
          |          |か
          |          |
          |          |き

プログラムなのですが、以下のようになっております。
※上記のテーブル内容とプログラム内容は異なります

@Stateful
@Name("articleLists")
public class ArticleTest01 implements Serializable, IArticleTest01 {

 /**
  *
  */
 private static final long serialVersionUID = -5711205240750158830L;

 @Logger
 Log log;

 @DataModel(value = "articleListForms")
 List<ArticleListForm> articleListForms;

 @DataModelSelection
 private ArticleListForm articleListForm;

 @PersistenceContext(type = EXTENDED)
 private EntityManager em;

 @SuppressWarnings("unchecked")
 public List<ArticleListForm> getArticleListForms() {

  List<ArticleMst> articleMsts = em.createQuery(
    "select b from ArticleMst b order by b.artid").getResultList();
  if (articleListForms == null){
   articleListForms  = new ArrayList<ArticleListForm>();
  }
  for (int i = 0; i < articleMsts.size(); i++) {
   ArticleMst articleMst = articleMsts.get(i);
   List<Inspection> inspections = em.createQuery(
     "select b from Inspection b where b.artid ="
       + articleMst.getArtid() + "and insid = 0").getResultList();
   articleListForm = new ArticleListForm();
   if (inspections.size() >= 1) {
    Inspection inspection = inspections.get(0);
    articleListForm.setOkNg(inspection.getOkng());
   } else {
    articleListForm.setOkNg("未実施");
   }
   articleListForm.setArticleName(articleMst.getArtname());
   articleListForm.setArticleDates(articleMst.getArtdates());
   articleListForm.setArticleDatee(articleMst.getArtdatee());
   articleListForms.add(articleListForm);
  }

  return articleListForms;

 @Remove
 @Destroy
 public void destroy() {
  log.info(this + " は破棄されました");

 }

}

この中の「articleListForms」を利用して、Excelに表示しようとしていますが、
表示することができません。
どうも、ArticleMstを読み込んだ後に、for文でループさせると、
ループさせた回数分だけExcelに余計に表示されてしまう気がします。
これは、周知のバグなのでしょうか?それとも、表示の仕方が悪いのでしょうか??

説明が分かりづらかったら申し訳ありません。
また再度説明させていただきます。

申し訳ございませんが、ご教示のほどお願いいたします。 
-------------- next part --------------
HTMLの添付ファイルを保管しました...
Télécharger 



Japan-jbug-members メーリングリストの案内
Back to archive index