2017-06-05 5 views
0


私のコントローラクラスでは、以下のようにいくつかの属性をリクエストに設定しています。JavaScriptでダイナミックリクエスト変数にアクセスする

for(ConsumerVO dep:quoteVO.getConsumerFamily().getDependents()) 
      { 
       request.setAttribute("dependent_"+depCount+"_birthdateMM", dep.getBirthdateMM()); 
       request.setAttribute("dependent_"+depCount+"_birthdateDD", dep.getBirthdateDD()); 
       request.setAttribute("dependent_"+depCount+"_birthdateYYYY", dep.getBirthdateYYYY()); 
       depCount++; 
      } 

jspでは、変数名を動的に設定してアクセスしようとしています。しかし、それは働いていない。 $ {depMM}、$ {depDD}などのデータはありません。$ {$ {depMM}}のようなものを探しています。ループ内で要求変数にアクセスするにはどうすればよいですか?

jQuery(function(){ 

     var dependent_data = []; 
     for(j=1;j<16;j++){ 
      var depMM = "dependent_"+j+"_birthdateMM"; 
      var depDD = "dependent_"+j+"_birthdateDD"; 
      var depYY = "dependent_"+j+"_birthdateYYYY"; 
      if (typeof '${depMM}' !== 'undefined' && '${depMM}' !=="") { 
      dependent_data.push('${depMM}','${depDD}','${depYYYY}'); 
      } 
     } 

PS:これを実行すると、データが印刷されました。

var dependent1MM_data = '${dependent_1_birthdateMM}'; 
alert(dependent1MM_data); 
+0

あなたはどのようにJSPで変数を設定しているかを示すことができますか? – karthick

+0

この変数はjspでは直接使用されません。このデータに基づいていくつかのdivを表示/作成する別のjquery関数に渡されます。 – jijo

答えて

1

このような変数にアクセスすることはできません。あなたはJavaScriptとJSPを混ぜています。 forループは、ページがロードされるとクライアント側で実行されます。 JavaScript内の変数にアクセスすることはできません。代わりに、それをjsp forループにして、その中の変数にアクセスすることができます。

これはいくつかの方法です 1. forループ(JSP forループまたはJSTL)を作成し、リクエストパラメータにアクセスして入力隠しタグを作成し、JSにアクセスします。 (OR) 2. JSON StringをJSPに記述してJavaScriptにアクセスできます。

var myObject = <%= JSON output of dependedents %>; 

次の文が動作する理由は、JSPテンプレートは、テンプレートエンジンをレンダリングされる

var dependent1MM_data = '${dependent_1_birthdateMM}'; 
alert(dependent1MM_data); 

は、この変数に値を設定しています。 JSエンジンと結びついているのではなく、JSPレンダリングエンジンに縛られています。

データが大きすぎると、より多くの変数とinput.hidden要素が作成されるため、JSON文字列を作成することをお勧めします。 JSONを書くことは良い解決策になります

注:私はJSPやSpringではうまくありません。しかし、私はテンプレート言語でいくつかの経験があります。だから私はちょうどここで間違いを指摘している

関連する問題