Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

javaBeanの呼び出し方法について

あるjavaBean(ProductBean)を作成して各メソッドで、そのBeanの中に値をsetしていきたいと考えております。
1つのメソッドだけであれば問題ないのですが、2つ目のメソッドでも同じBean呼び出して値をセットする事がうまく出来ません。

以下のようにプログラムを書いてみましたが、getProductDB2のメソッドでproductBeanはNULLの状態となってしまっているようです。
どこが悪いのでしょうか?

---------------------------------------------------------------------------
public class NotesDBConnect{
    ・・・
public void getProductDB1(HttpServletRequest req, HttpServletResponse res, String product_no){
        ・・・
    ProductBean productBean = new ProductBean();

    if(doc!=null){
        productBean.setProduct_name(doc.getItemValueString("product_name"));
        ・・・
                req.setAttribute("ProductItem",productBean);

    }
}


public void getProductDB2(HttpServletRequest req, HttpServletResponse res, String product_no){
        ・・・
    ProductBean productBean = (ProductBean)req.getAttribute("ProductItem");

    if(doc!=null){
        productBean.setProduct_price(doc.getItemValueString("product_price"));
    ・・・
    }
}

}
---------------------------------------------------------------------------

以上、宜しくお願い致します。

6

回答

79283

閲覧

6件の回答

評価

0

このふたつのメソッドを、どのように呼び出しているのでしょうか?
ひとつめのメソッドのreqとふたつめのメソッドのreqは、同じものですか?

評価

0

getProductDB1が呼ばれてからgetProductDB2が呼ばれるまでの間がどうなっているのかが見えないですけど、その間にリクエストの流れが切れていたりしないですか?
requestスコープの場合だと、サーブレットからforwardされたJSPに行くと、そこで切れる(ProductBeanオブジェクトは消滅する)と思います。

評価

0

早速のご回答有難うございます。

メソッドは他のサーブレットから以下のように
順番に呼び出しております。

notesDBConnect.getProductDB1(req,res,product_no);
notesDBConnect.getProductDB2(req,res,product_no);

この場合でもProductBeanは消滅してしまいますか?
消滅してしまう場合、requestスコープでは無理という事に
なりますでしょうか?

評価

0

単に続けて呼んでいるだけなら、requestは同じものなので維持されます。

getProductDB1を抜ける際にreq.getAttribute("ProductItem")はどうなっていますか?

余談ですが、この場合の"ProductItem"みたいなのは、定数宣言するほうが、分かりやすいし間違いも防げます。

評価

0

それだと普通にオブジェクトを扱っているのと変わりないのではないかと思うけど・・。
何か落とし穴が?

>req.setAttribute("ProductItem",productBean);
を通っていることは確認しているのだろうと思うし・・。

評価

0

その2つの呼び出しの間には、本当に何の処理もないんですね…?

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。