2017-02-14 54 views
1

我想通過參數發送JavaScript對象到Struts2 autocompleter動作。但它不起作用。如何在Struts2 autocompleter動作中傳遞javascript對象?

這裏是我的代碼:

<script> 
var nameList = new Array(); 
    function func1(element) 
    {  
     console.log(element.value); 
     var index = nameList.indexOf(element.value); 
     element.checked ? nameList.push(element.value) : nameList.splice(index,1);  
     console.log(nameList.length+"---- "+nameList); 
    } 
</script> 

<s:form name="baseForm" id="baseForm"> 

    <table width="100%" > 
     <tr> 
      <td ><s:text name="Units" /></td> 
      <td> 
       <s:iterator value="units" status="itr" id="un"> 
        <input type="checkbox" onclick="func1(this)" 
         name="unitList[<s:property value="#itr.index"/>]" 
         value="<s:property value="#un" />" /> 
       </s:iterator>  
      </td>     
     </tr>  
     <tr> 
      <td ><s:text name="Groups"/></td> 
      <td width="80%"> 
       <sd:autocompleter href='get_groups.action?unitList=%{nameList}' id='unitAutoComplete' name='unitGroup' loadOnTextChange='true' 
        loadMinimumCount='1' showDownArrow='false' autoComplete='false' /> 
      </td> 
     </tr> 
    </table> 
</s:form> 

根據選定的部門,集團應該得到填充在autocompleter。

所以我的第一個問題是是否有可能通過參數發送JavaScript對象到struts2操作?

如果是的話,請告訴我如何將JavaScript對象作爲參數傳遞。

回答

0

你不能在同一個請求中做到這一點。 autocompleter標記在服務器端呈現,但您希望在JavaScript已經呈現時使用JavaScript在客戶端進行修改。

最好的辦法是對服務器進行ajax調用,並將變量傳遞給執行的操作,以修改autocompleter操作返回的列表。

如何將JavaScript對象傳遞給服務器,您應該知道您需要JSON格式。您可以閱讀Action to accept dynamic json data from user interface以獲取更多信息,瞭解如何將JavaScript對象轉換爲JSON並將其發送給操作。

相關問題