2012-01-19 77 views
0

フォーム要素値をjstlタグに取得するのに問題があります。私はいくつかの値が選択されたら、私はドロップダウンメニューを持っているように、私のJSPページでいくつかの派手なものをやっている、私はフォームの残りの部分をロードし、私は残りの負荷を選択したので、定数であり、次にロードするものを知っていますが、2番目のドロップダウンメニューはサーバーからの動的データを持っていますので、ユーザーが選択したことを知る必要があります。フォーム要素値をjstlに取得

私のjstlのフォーム要素値にアクセスできません。どうやってやるの ?

私のjsp:

<head> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    $("#implementation").change(function(){ 
     if ($(this).val() == "aaa") { 
      $("#aaa").slideDown("fast"); 
     } else { 
      $("#aaa").slideUp("fast"); 
     } 
    }); 

    $("#type").change(function(){ 
     if ($(this).val() == "new" || $(this).val() == "old") { 
      $("#remote").slideDown("fast"); 
     } else { 
      $("#remote").slideUp("fast"); 
     } 
    }); 
}); 
</script> 
</head> 
<body> 
    <form:form id="form" name="form" method="post" modelAttribute="store" action="/shard"> 
    <fieldset> 
    <div class="input select"> 
     <label for="implementation">Implementation<span class="small">Choose implementation</span></label> 
     <form:select name="implementation" path="implementation"> 
      <form:option value="">Choose Implementation</form:option> 
      <c:forEach items="${implementations.keySet()}" var="impl"> 
       <form:option value="${impl}"><c:out value="${impl}" /></form:option> 
      </c:forEach> 
     </form:select> 
    </div> 
    <div style="display: none;" id="aaa"> 
     <div class="input select"> 
     <label for="aaa" >aaa<span class="small">Choose cluster</span></label> 
     <form:select id="cluster" name="cluster" path="cluster"> 
      <form:option value="">Choose Cluster</form:option> 
      <c:forEach items="${implementations.get('aaa').getClusters().keySet()}" var="cl"> 
       <form:option value="${cl}"><c:out value="${cl}" /></form:option> 
      </c:forEach> 
     </form:select> 
     <label >new</label> 
     <form:checkbox id="type" path="type" value="new" /> 
     <label >old</label> 
     <form:checkbox id="type" path="type" value="old" /> 
     <div style="display: none;" id="remote"> 
      <label>Remote Sites <span class="small">Available Sites</span></label> 
      <c:if test="${implementations.get('aaa').getClusters().get(**<I need the above selected type checkbox value>**) == 'new'}"> 
       <form:checkboxes items="${implementations.get('aaa').getRemoteSites().get('<I need the above selected type checkbox value>').get**<old | new from the type checkbox above>**Sites()}" path="remoteSites" id="remoteSites" style="display: block; float: right;" /> 
      </c:if>         </div> 
      <input style="margin-left: 150px; width: 125px; height: 30px;" class="button" type="submit" value="Add" /> 
     <div class="spacer"></div> 
     </div> 
    </div> 
    </fieldset> 
</form:form> 
</body> 

任意のヘルプ?

+0

JSTLはサーバー側で実行されますが、JavaScriptはクライアント側で実行されます。ページを表示したり、フォームを送信したり、AJAXリクエストを行う前に、すべての値をJavaScriptオブジェクトとしてロードせずに、これが動作する可能性はありません。 –

+0

私はRESTful URLで春の作業をすることに問題があったので、これはうまくいくと思いました。とにかく、コメントありがとう – tazo

答えて

1

まあありがとう、「ダイナミック」の値が何らかの形でデータセットに接続するか、ページの設定可能性がありますので、あなたは、あなたが取得する必要があり、戻り値(S)のアイデアを持っている必要があります。あなたがしなかったとしても、ユーザオプションに基づいて選択されたデータをフェッチするためのロジックを作成できるはずです。

たとえば、データベーステーブルの主キーに基づく選択値を持つドロップダウンリストがあります。オプションを選択すると、ドロップダウンの主キーの値に基づいて、関連するデータセットをデータベースから取得します。ドロップダウンからの値は、以前に選択されたオプションに基づいて動的である場合もありますが、依然として特定のデータセットに関連付けられています。

これは、選択オプションをサーバー側で解析するために、すべてワイルドカードまたはカスタムロジックを使用して実行できます。

関連する問題