2011-11-09 23 views
0

私はユーザーが検索を行うことができるアプリケーションを持っています。JSPで条件にusebeanを使用することはできますか?

入力された検索基準に基づいて、DAO機能へのサービス呼び出しが行われ(パターンjspイベント - >インターセプタ - >プロセッサ - >サービス - > DAO - >データベース)、結果リストが返され、 myView.jsp

コードは以下のようにJSPのデータに読み取るために使用されます。

<jsp:usebean id="myTO" type="com.myPackage.MyTO" scope="session"/> 

をして

<%= myTo.getSomething() =%> 

リットルの各項目のような身体の何かでistはクリック可能です。したがって、リストの項目2をクリックすると、項目2の詳細を取得するために、項目2のIDで別の呼び出しが行われます。

項目の種類によって、詳細が異なるTOで取り出されます。例えばタイプ1TO、タイプ2TO。

このように、明細の詳細データがTOに返されます。

問題は:同じJSPで詳細を表示しています。だから、2番目の要求のにreturnurlは、だから私は

<jsp:usebean id="type1TO" type="com.myPackage.Type1TO" scope="session"/> 

のような行を入れているmyView.JSP

に転送されます上記のType1TOがまだ存在しない場合しかし、これはリスト検索の最初の呼び出し中にエラーが発生します。エラーは、「スコープセッションでtype1TOを見つけることができません」というようなものです。

この問題はどのように解決できますか?

jsp:usebeanタグをif条件でbodyに使用する場所に配置する方法はありますか?またはこれに他の解決策?

私はJSPには新しく、従来のJSPを扱っています。したがって、非常に高度なJSP(複雑なEL)は実現不可能かもしれません。

+0

。 –

+0

これには事前の要件はありますか?または宣言の私の方法は正しくないですか? – Nik

+0

私が知っていることはありません。私は間違って覚えている可能性があります。 –

答えて

0

次は<usebean>の使い方です:

  1. <jsp:useBean id=”connection” class=”com.myco.myapp.Connection” />。この例では、idを持つBeanは、セッション内に既存のものを作成または見つけることによって利用可能になります。
  2. <jsp:useBean id=”connection” class=”com.myco.myapp.Connection”> <jsp:setProperty name=”connection” property=”timeout” value=”33”> </jsp:useBean>この例では、Beanは作成または検出され、作成されている場合はsetPropertyで開始されます。
  3. <jsp:useBean id=”wombat” type=”my.WombatType” scope=”session”/>。この例では、既存のBeanが検出され、指定された型で使用可能になります。単一の属性またはあなたの特定のケース「に依存場合-elseロジックを持つ複数の属性を」を使用するかどうか

    getAttribute("myTO"); 
    

  4. サーブレットに変換した場合
0

、あなたの最初のコードスニペットは次のようになります。あなたはmyTO属性を設定している場合はいつでも、あなたがIF-使用する必要がないように、あなたが同じ変数に値を設定することを確認、

オプション1 :あなたの特定の状況を理解しなければ、私は、次のオプションを見ることができますそれ以外はjspのロジック。

オプション私の理解では、それがまだ存在していなかった場合useBeanタグは、指定されたスコープでBeanを作成するというものであった2つの 使用スクリプト

<% 
    com.myPackage.MyTO toObject = session.getAttribute("myTo"); 
    if (toObject == NULL) { 
     toObject = session.getAttrbute("type1TO"); 
    } 
%> 
関連する問題