String myname = asString("myname");フォームから送られた値を取得します。まだindex.jspは作ってませんが、myname, mail, ageと、エンティティクラスのプロパティと同じ名前でフォームのフィールド類が用意されている、という前提でコードを書いておきましょう。
String mail = asString("mail");
int age = asInteger("age");
MyData mydata = new MyData();取得した変数を元に、MyDataインスタンスを作ります。これは単純ですね。newしてSetterメソッドを呼び出していくだけです。これで保存するエンティティのインスタンスは用意できました。
mydata.setMyname(myname);
mydata.setMail(mail);
mydata.setAge(age);
Datastore.put(mydata);これが、エンティティを保存する処理です。Datastoreクラスのputというメソッドを呼び出すだけ! このDatastoreクラスは、GAEの標準ライブラリではなく、Slim3に用意されているクラスです(GAEのデータストアクラスはDataStore、「S」が大文字です)。
List<MyData> mydatas = Datastore.query(MyDataMeta.get()).asList();残る「エンティティの取得」についてです。これは、上の1文だけで行っています。Datastoreクラスの「query」というメソッドを呼び出し、その返値の「asList」を呼び出していますね。
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
package com.tuyano.libro.myslim3app.controller; import java.util.List; import org.slim3.controller.Controller; import org.slim3.controller.Navigation; import org.slim3.datastore.Datastore; import com.tuyano.libro.myslim3app.meta.MyDataMeta; import com.tuyano.libro.myslim3app.model.MyData; public class IndexController extends Controller { @Override public Navigation run() throws Exception { String msg = "データの入力"; if (isPost()){ String myname = asString("myname"); String mail = asString("mail"); int age = asInteger("age"); MyData mydata = new MyData(); mydata.setMyname(myname); mydata.setMail(mail); mydata.setAge(age); Datastore.put(mydata); } List<MyData> mydatas = Datastore.query(MyDataMeta.get()).asList(); request.setAttribute("msg", msg); request.setAttribute("mydatas", mydatas); return forward("index.jsp"); } }
<< 前へ | 次へ >> |