いつもお世話になっております。フレームワークについて調べておりまして、Seasar2徹底入門を見つつ
画面間の値の受け渡しはできました。
その後DBから、top.jspで入力された国名を条件にして
取得したい処で手詰まりを起こしています。
S2Daoが正しく入ってないのか、diconの設定ができてないのか
赤線がでており、ネットで情報を見つけれていません。
Eclipse
Java1.7
XAMPP
TOMCAT
を使っており、Eclipseのヘルプから新規ソフトウェアからS2Daoは入れました。
ネット上のサンプルを元に進めています。
DAO package product.dao; import product.entity.Product; /*3行共にインポートされた org.seasar.dao は見つかりません、と出る*/ import org.seasar.dao.annotation.tiger.Arguments; import org.seasar.dao.annotation.tiger.Query; import org.seasar.dao.annotation.tiger.S2Dao; public class ProductDao { @S2Dao(bean=Product.class) /*ネストされた型 ProductDao はエンクロージング型を隠せません、と出る*/ public interface ProductDao { /* 国名を条件にする */ @Query("country = ? ") public Product[] selectWhere(String country); @Arguments("country") public Product selectById(String country); public int insert(Product product); public int update(Product product); public int delete(Product product); } }
追記1
s2Dao.diconが自動生成されてなかった(自作しないといけない?)
のが原因のようです。
jdbc.dicon dao.dicon s2jdbc.dicon 生成されており、修正しております。
参考URL:http://snowhiro.web.fc2.com/seasar2/Seasar2_04_S2Dao_02.html
s2Dao.diconを作成について調査中です。
追記2
途中ですが、一回追記します。
S2DaoでSQLをどう生成したらよいのかもわからないままです
actionのmainの処理もできていません。
このサイトわかりやすいよ。とかそういうのありましたら
教えて頂けないでしょうか。。。
以下は今書いてる途中のものです。
DAO package product.dao; import java.util.List; import org.seasar.dao.annotation.tiger.S2Dao; import product.entity.Product; @S2Dao(bean=Tea.class) public interface ProductDao{ public List<Product> selectAll(); }
entity(bean?) package product.entity; import org.seasar.dao.annotation.tiger.Bean; //MySQLで作ったテーブル名を書く? @Bean(table="PRODUCT_TABLE") public class Product { public Integer id; public String country; public String productName; public String description; }
action package product.action; import java.util.List; import javax.annotation.Resource; import org.seasar.framework.container.S2Container; import org.seasar.framework.container.SingletonS2Container; import org.seasar.framework.container.factory.SingletonS2ContainerFactory; import org.seasar.struts.annotation.ActionForm; import product.dao.ProductDao; import product.entity.Product; import product.form.EchoForm; public class EchoAction { // 設定ファイルのPath private static final String PATH = "test/src/main/resources/s2Dao.dicon"; //アクションフォーム @Resource @ActionForm protected EchoForm echoForm; /** 入力画面の実行メソッド */ @Execute(validator=false) public String index(){ return "top.jsp"; } // DBから値を受け取るメソッド public String main(){ // 設定ファイルを読み込む. SingletonS2ContainerFactory.setConfigPath(PATH); // 初期化する. SingletonS2ContainerFactory.init(); // コンテナを取得する. S2Container container = SingletonS2ContainerFactory.getContainer(); ProductDao proDao = (ProductDao)SingletonS2Container.getComponent(ProductDao.class); List<Product> list = proDao.selectAll(); //確認 for (Product pro : list) { System.out.print(" pro.id : " + pro.id); System.out.println(" pro.productName : " + pro.productName); System.out.println(" pro.country : " + pro.country); System.out.println(" pro.description : " + pro.description); } return "echo.jsp"; } }
追記3
教えて頂いたサンプルを作ってみたりしているのですが、Diconのパスを指定するところで、リソースが見つかりません【ESSR0055】エラーコード
が出てきている状況で処理がサンプルも、本題も同じエラーで進めれず止まってしまいます。
ディレクトリはあってるはず。。
質問するには、理解が浅くご迷惑おかけしました。
dao // 設定ファイルのPath private static final String PATH = "test/src/main/resources/s2Dao.dicon"; // 設定ファイルを読み込む Eclipseのデバッグでここでエラーを吐く S2Container container = S2ContainerFactory.create(PATH);
回答1件
あなたの回答
tips
プレビュー