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
きむらさんの公開して下さったテンプレートを元に
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の追加だけしました。
特殊な方法を取っているようですが、mvn eclipse:eclipseでプロジェ
クトファイルをgenerateしてimportする、普通の方法では何か問題
がありましたか?
Regards,
Takayoshi
At Mon, 1 Sep 2008 14:11:45 +0900,
>おお、すばらしい。
>
>特殊な方法を取っているようですが、mvn eclipse:eclipseでプロジェ
>クトファイルをgenerateしてimportする、普通の方法では何か問題
>がありましたか?
GUIで出来る限りと思って急いで書いちゃいました。
きむらさんの御指摘の方法でもまとめてみたいと思います。
ありがとうございます!
という事できむらさんのpom.xmlに少し手を加えさせて
もらってmvn eclipse:eclipse → インポートの方法をまとめました。
下記に手を加えたpom.xmlも置いときました。
http://www26.atwiki.jp/memotech/pages/56.html
なにか、こうした方がいいよ等ありましたら御指摘下さい。
* ビルドしてデプロイするとエラーになる
* リソース定義が消えた(ビルド後のpersistence.xmlの位置がおかしい)
* リソースフィルタが消えた(persistence.xmlが書き換わってない)
* JUnitのコメントおかしい
* 改行コードがいろいろおかしい
* JUnitとServletの依存を書かなきゃならないEclipse/Maven2インテグレーションがおかしい
Cheers,
Takayoshi
At 2 Sep 2008 12:13:02 +0900,
きむらさん御指摘ありがとうございます!
> * ビルドしてデプロイするとエラーになる
> * リソース定義が消えた(ビルド後の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)
ではー
JBossTools 3.0A では、一応 portlet を作れるようなメニューは出るのですが、動いてはいないみたいです。 portletbridgeには mvn archetypeもあり、richfaces は portal/portletbridgeでも動くようなので、ついでに seam で portletを作れて、eclipseでいじれるようなmaven2のテンプレートには出来ませんでしょうか?
折角 portalがあっても 現状ではseamのアプリがそのままでは動かないけど、seamアプリの認証等は portalのを使えばいちいち作る必要が無い(MDBの練習には良いかも知れませんが)と思っているので、、、、。
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=(作物の名前が適切ではありません。再度選択してみてください。)]
======================================================
<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フォーラム欲しいですね,,,。
Regards,
Takayoshi
At Fri, 05 Sep 2008 16:03:40 +0900 (JST),
Regards,
Takayoshi
At Fri, 05 Sep 2008 09:37:09 +0900 (JST),
ご指摘の所、確かに間違っているのですが,57に書き込んだ通り、それだけではないみたいです。