[jjbug-seam 46] SeamのMaven2テンプレートを公開しました

117 views
Skip to first unread message

Takayoshi Kimura

unread,
Aug 29, 2008, 8:02:18 PM8/29/08
to japan-j...@lists.sourceforge.jp
きむらです。

SeamのMaven2テンプレートを置いておきました。

http://nekop.programmers.jp/diary/?date=20080828#p02
http://nekop.programmers.jp/etc/jjbug-seam-richfaces.zip

# 実は28日のセッションでMaven2についてもやろうかなと思ってた
# んですがボツにしたネタです

Seamをはじめる方法は大きく4つあります。その中で一番スタートに
手間がかからないのがMaven2による方法です。

* JBoss Tools/JBoss Developer Studioを利用
- IDEサポートをフル活用できる
- JBoss Toolsは動かすまでのセットアップに手間がかかる
* Examplesのプロジェクトをコピー
- Antベース
* Seam-genを利用
- Antベース
* Maven2を利用
- Maven2の知識があれば一番簡単

さらっと試すにはMaven2が最適です。なにかわからないことや、
pom.xmlの改善案などあれば返信ください。

Regards,
Takayoshi

_______________________________________________
Japan-jbug-seam mailing list
Japan-j...@lists.sourceforge.jp
http://lists.sourceforge.jp/mailman/listinfo/japan-jbug-seam

Takayoshi Kimura

unread,
Aug 29, 2008, 8:00:51 PM8/29/08
to japan-j...@lists.sourceforge.jp

Takeda@bose999

unread,
Sep 1, 2008, 1:11:45 AM9/1/08
to japan-j...@lists.sourceforge.jp
武田@bose999です。

きむらさんの公開して下さったテンプレートを元に
WTPで使用する方法をざっとまとめてみました。

手元の環境がRHELでJBoss Developer Studioなんですが、
WindowsでEclipse + JBoss Toolsでも同じように出来るかと思います。

warファイルでSeam2開発 on Maven2 + WTP
http://www26.atwiki.jp/memotech/pages/53.html

きむらさん ありがとうございます!

#pom.xmlには上記のドキュメントではJUnitのjarの追加だけしました。

Takayoshi Kimura

unread,
Sep 1, 2008, 1:54:59 AM9/1/08
to japan-j...@lists.sourceforge.jp
おお、すばらしい。

特殊な方法を取っているようですが、mvn eclipse:eclipseでプロジェ
クトファイルをgenerateしてimportする、普通の方法では何か問題
がありましたか?

Regards,
Takayoshi

At Mon, 1 Sep 2008 14:11:45 +0900,

ml_...@techie.jp

unread,
Sep 1, 2008, 2:03:23 AM9/1/08
to japan-j...@lists.sourceforge.jp
武田です。

>おお、すばらしい。
>
>特殊な方法を取っているようですが、mvn eclipse:eclipseでプロジェ
>クトファイルをgenerateしてimportする、普通の方法では何か問題
>がありましたか?

GUIで出来る限りと思って急いで書いちゃいました。
きむらさんの御指摘の方法でもまとめてみたいと思います。
ありがとうございます!

ml_...@techie.jp

unread,
Sep 1, 2008, 11:13:02 PM9/1/08
to japan-j...@lists.sourceforge.jp
武田です。

という事できむらさんのpom.xmlに少し手を加えさせて
もらってmvn eclipse:eclipse → インポートの方法をまとめました。
下記に手を加えたpom.xmlも置いときました。

http://www26.atwiki.jp/memotech/pages/56.html

なにか、こうした方がいいよ等ありましたら御指摘下さい。

Takayoshi Kimura

unread,
Sep 2, 2008, 12:17:18 AM9/2/08
to japan-j...@lists.sourceforge.jp
さらっと気づいたところを。

* ビルドしてデプロイするとエラーになる
* リソース定義が消えた(ビルド後のpersistence.xmlの位置がおかしい)
* リソースフィルタが消えた(persistence.xmlが書き換わってない)
* JUnitのコメントおかしい
* 改行コードがいろいろおかしい
* JUnitとServletの依存を書かなきゃならないEclipse/Maven2インテグレーションがおかしい

Cheers,
Takayoshi

At 2 Sep 2008 12:13:02 +0900,

ml_...@techie.jp

unread,
Sep 2, 2008, 12:59:20 AM9/2/08
to japan-j...@lists.sourceforge.jp, japan-j...@lists.sourceforge.jp
武田です。

きむらさん御指摘ありがとうございます!

> * ビルドしてデプロイするとエラーになる
> * リソース定義が消えた(ビルド後のpersistence.xmlの位置がおかしい)
> * リソースフィルタが消えた(persistence.xmlが書き換わってない)

Eclipse側で出ていたJava Build Pathの設定のエラーに対応したところ、
${pom.artifactId}が書き換わらなくなってしまいました。
御指摘通りです。見直します。

> * JUnitのコメントおかしい

うは>< 読み直しました。恥ずかしい。直します。

> * 改行コードがいろいろおかしい

見直します。

> * JUnitとServletの依存を書かなきゃならないEclipse/Maven2インテグレーションがおかしい

WTPの設定ファイルを2.5にするためにServletの2.5を使いました。
入れないと2.4になるんです、、、

JUnitはpackageすると下記が出るので入れました。

java.lang.NullPointerException
at org.apache.maven.plugin.surefire.SurefirePlugin.constructSurefireBooter(SurefirePlugin.java:594)

ではー

ml_...@techie.jp

unread,
Sep 2, 2008, 12:59:20 AM9/2/08
to japan-j...@lists.sourceforge.jp, japan-j...@lists.sourceforge.jp

ken

unread,
Sep 4, 2008, 8:37:09 PM9/4/08
to japan-j...@lists.sourceforge.jp, ml_...@techie.jp
山田です、便乗でお願い。

 JBossTools 3.0A では、一応 portlet を作れるようなメニューは出るのですが、動いてはいないみたいです。 portletbridgeには mvn archetypeもあり、richfaces は portal/portletbridgeでも動くようなので、ついでに seam で portletを作れて、eclipseでいじれるようなmaven2のテンプレートには出来ませんでしょうか?

 折角 portalがあっても 現状ではseamのアプリがそのままでは動かないけど、seamアプリの認証等は portalのを使えばいちいち作る必要が無い(MDBの練習には良いかも知れませんが)と思っているので、、、、。

ken

unread,
Sep 5, 2008, 3:03:40 AM9/5/08
to japan-j...@lists.sourceforge.jp

 山田です。

 suggestionBoxを使って、inputの入力を補助しているのですが、suggestionBoxの示す選択肢以外を入力されると困るので、更に <a4j:support で入力内容のチェックを行っており、入力が間違っていると、エラーメッセージが出てくれることを期待しているのですが、下のログの様にqueueに溜まってしまい、表示されません(表示されたり、されなかったりして、理由が分からないのですが)。 layout/edit.xhtmlなどはseam-genが作ってくれたものをそのまま使ってます。

 どこか勘違いしているのでしょうか? 

================= xxx.xhtml ========================
: : :
<ui:define name="content">
<h:messages globalOnly="false" styleClass="message" id="globalMessages"/>
<h:form>
<h4>適用作物、対象病害虫雑草による検索</h4>
<div class="searchBox">
<s:decorate id="cropForSearch" template="layout/edit.xhtml">
<ui:define name="label">作物</ui:define>
<h:inputText id="acisCrops"
value="#{acisCropExample.acisCrop}" required="true">
<a4j:support id="acisCropCheck"
event="onblur" reRender="acisCrops"
bypassUpdates="true"
ajaxSingle="true"
actionListener="#{cropFinder.verifyCropName}"/>
</h:inputText>
<rich:suggestionbox for="acisCrops" nothingLabel="Empty"
selfRendered="true" suggestionAction="#{cropFinder.getAcisCrop}"
var="c" fetchValue="#{c.acisCrop}">
<h:column>
<h:outputText value="#{c.acisCrop}" />
</h:column>
</rich:suggestionbox>
</s:decorate>
</div>
</h:form>
</ui:define>
: : :
===================================================

=============== CropFinder.java ===================
: : :
@Name("cropFinder")
public class CropFinder extends EntityController {
@Logger
private Log log;
@In
private FacesMessages facesMessages;
@In
private EntityManager entityManager;

@Transactional
public List<AcisCrop> getAcisCrop(Object event) {
log.info("getAcisCrop #0", event.toString());
return entityManager
.createQuery("select ...............")
.setParameter("name", event.toString()).getResultList();
}

public void verifyCropName(ActionEvent e) {
String cropName = (String)
((UIInput) e.getComponent().getParent()).getValue();
if (cropName != null && !isCropNameValid(cropName)) {
facesMessages.addToControl(((UIInput)
e.getComponent().getParent()).getId(),
"作物の名前が適切ではありません。再度選択してみてください。");
}
}

public boolean isCropNameValid(String cropName){
return entityManager.createQuery(
"select ........... ")
.setParameter(1, cropName).getResultList().size() > 0;
}
}

======================================================

該当部分のログの内容、、、

======================================================
: : : :
15:58:51,445 INFO [lifecycle] WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=j_id57:cropForSearch:acisCrops[severity=(INFO 0), summary=(作物の名前が適切ではありません。再度選択してみてください。), detail=(作物の名前が適切ではありません。再度選択してみてください。)]

======================================================

ken

unread,
Sep 7, 2008, 10:02:53 PM9/7/08
to japan-j...@lists.sourceforge.jp
seam-genで生成されたコードでは

<ui:define name="body">
<h:messages globalOnly="true" styleClass="message" id="globalMessages"/>

<h:form id="hoge" styleClass="edit">
<rich:panel>
: : :
  </h:form>
</ui:....>

と、<h:message ...> は <h:form> </h:form> の外にあるのですが,マニュアル(http://www.redhat.com/docs/manuals/jboss/jboss-eap-4.2/ja_JP/html/Seam_Reference_Guide/Seam_Reference_Guide-JSF_form_validation_in_Seam.html)では <h:form> </h:form> の内側にあるようになっていたので、そのように書き換えて解決!!

 seam-genの生成するxhtmlのコードがオカシイ、という事?


ps. 新規スレッドのつもりで送ったら、Maven2のスレッドを書き換えてしまいました。 
  木村さん、武田さんごめんなさい。
  seamframework(example/wiki)はちゃんと動いているみたいだし、自前のseamフォーラム欲しいですね,,,。

Takayoshi Kimura

unread,
Sep 7, 2008, 10:17:32 PM9/7/08
to japan-j...@lists.sourceforge.jp
reRenderにs:decorateのidではなく、h:inputTextのidを指定してし
まっているからではないですか?reRender="cropForSearch"とした
ときの結果はどうなりますか?

Regards,
Takayoshi

At Fri, 05 Sep 2008 16:03:40 +0900 (JST),

Takayoshi Kimura

unread,
Sep 7, 2008, 10:24:17 PM9/7/08
to japan-j...@lists.sourceforge.jp
僕はPortalには今のところ興味がないので、とりあえずパス。山田
さんトライしてみません?

Regards,
Takayoshi

At Fri, 05 Sep 2008 09:37:09 +0900 (JST),

ken

unread,
Sep 9, 2008, 3:28:46 AM9/9/08
to japan-j...@lists.sourceforge.jp, tki...@redhat.com
 木村さん、

ご指摘の所、確かに間違っているのですが,57に書き込んだ通り、それだけではないみたいです。

ken

unread,
Sep 9, 2008, 3:36:17 AM9/9/08
to japan-j...@lists.sourceforge.jp, tki...@redhat.com
検討します。 でも,検討しているうちにJBossTools 3.0Beta2で動く様になっている事を期待しています。 
Webって、パチンコ屋みたいに頻繁に入れ替えして行かないと、所詮は客商売なので、、、。と思うと portalは積極的に利用したくなります。 その上で,seamでアプリ書いておいて、必要に応じてseam アプリが portletize 出来るというのは、とってもメリットがあると思います。
portletbridgeの説明の中に portlet の最終仕様が9月位に決まる、とか書いてあったような気がしますので、もう少し様子見てから,,,。
Reply all
Reply to author
Forward
0 new messages