2012-01-19 103 views
0

我無法將表單元素值轉換爲jstl標記。我在我的jsp頁面中做了一些奇特的事情,就像我有一個下拉菜單,一旦選擇了某個值,我加載剩餘的表單,一旦選擇了我加載休息,因此對於第一個下拉列表我沒有問題,因爲它們是常量,我知道接下來要加載什麼,但是我有第二個下拉菜單,它有來自服務器的動態數據,所以我需要知道用戶選擇了什麼,所以我可以根據它加載其餘的表單。將表單元素值轉換爲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

好了,「動態」價值很可能以某種方式連接到數據集或一組網頁,所以你應該有返回值(一個或多個),你需要得到的想法。即使你沒有,你也應該能夠根據用戶選項創建一些邏輯來獲取選定的數據。

說例如我有一個下拉列表,其中包含基於數據庫表中主鍵的選擇值。選擇該選項後,我只需根據下拉列表中的主鍵值從數據庫中獲取關聯的數據集。根據之前選擇的選項,下拉列表中的值可能是動態的,但它們仍然與特定數據集綁定。

這一切都可以通過通配符或一些自定義邏輯來解析您的選擇選項服務器端。