複数モデルを連携処理する (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)プログラミング入門」に戻る