複数モデルを連携処理する (4/6)
作成:2010-05-07 17:02
更新:2010-05-10 17:40
更新:2010-05-10 17:40
■AddMsgDataServletクラスの作成
では、/addmsgにマッピングされるAddMsgDataServletクラスを作成しましょう。下に、ソースコードを掲載しておきます。
ここでは、送られてきたIDパラメータとコメントのテキストを取り出し、MsgDataを作成して保存しています。が、注意したいのは、「関連するLinkDataも必要になる」という点です。すなわち、
1.取得したIDをもとに、LinkDataオブジェクトを取得する。
2.LinkDataをもとに、MsgDataインスタンスを作成する。
3.取得したLinkDataからMsgDataを保管するListを取得し、MsgDataを追加してまた元に戻す。
4.MsgDataを保存し、closeして終わり。
このように、MsgDataだけでなく、関連付けるLinkData側もデータの修正をする必要があります。双方向に関連付けを行う場合、このようにお互いを修正しなければいけません。
※なお、LinkDataクラスにも、新たにListを保管するフィールドを追加したので、AddLinkDataServletクラスも、new ArrayListをフィールドに設定するなど修正しておく必要があります。このへんは、それぞれでやっといてください。
ここでは、送られてきたIDパラメータとコメントのテキストを取り出し、MsgDataを作成して保存しています。が、注意したいのは、「関連するLinkDataも必要になる」という点です。すなわち、
1.取得したIDをもとに、LinkDataオブジェクトを取得する。
2.LinkDataをもとに、MsgDataインスタンスを作成する。
3.取得したLinkDataからMsgDataを保管するListを取得し、MsgDataを追加してまた元に戻す。
4.MsgDataを保存し、closeして終わり。
このように、MsgDataだけでなく、関連付けるLinkData側もデータの修正をする必要があります。双方向に関連付けを行う場合、このようにお互いを修正しなければいけません。
※なお、LinkDataクラスにも、新たにListを保管するフィールドを追加したので、AddLinkDataServletクラスも、new ArrayListをフィールドに設定するなど修正しておく必要があります。このへんは、それぞれでやっといてください。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
package jp.tuyano;
import java.io.IOException;
import java.net.URL;
import java.util.*;
import javax.jdo.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
public class AddMsgDataServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/plain");
resp.getWriter().println("no url...");
}
@Override
protected void doPost(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
long id = Long.parseLong(req.getParameter("id"));
String message = req.getParameter("message");
Date date = Calendar.getInstance().getTime();
PersistenceManagerFactory factory = PMF.get();
PersistenceManager manager = factory.getPersistenceManager();
LinkData linkdata = (LinkData)manager.getObjectById(LinkData.class,id);
MsgData data = new MsgData(linkdata,message,date);
List<MsgData> msgdatas = linkdata.getMsgDatas();
msgdatas.add(data);
linkdata.setMsgDatas(msgdatas);
try {
manager.makePersistent(data);
} finally {
manager.close();
}
resp.sendRedirect("/index.html");
}
}
※関連コンテンツ
「Google App Engine for Java(GAE/J)プログラミング入門」に戻る