簡體   English   中英

Struts2 Jquery 多選值

[英]Struts2 Jquery Multiple Select Value

我正在做一些應該非常簡單的事情。 我正在使用 Struts2 Jquery 插件,並且我的頁面上有一個<sj:select> 它設置為multiple 我有一組要預先選擇的值,但沒有設置任何值。 如果我在 value 標簽中給它一個單項,則該單項將被選中。 如果我將ArrayList of IntegersCollection of Integer (仍然是ArrayList的實例)或逗號分隔的字符串(“100,101,102”)傳遞給該值,則不會選擇任何內容。 我試過傳遞一個簡單的整數數組( Integer[] ),它至少會選擇數組中的第一項,但就是這樣。 所有其他人顯然都被丟棄了。 我無法理解我做錯了什么,或者我能做些什么來完成這項工作。

<sj:select 
    href="%{myStrutsJSONAction}"
    id="itemSelect"
    formIds="editForm"
    reloadTopics="reloadItem"
    name="selectedString"
    list="availableItems"
    listKey="id"
    listValue="description"
    multiple="true"
    cssClass="form-control"
    value="selectedIds"
    />

這最初是一個常規的 Struts2 選擇( <s:select> ),並且與傳遞給值標記的Integers ArrayList一起工作得非常好。 我已更改為 Jquery 插件版本,因為我需要根據單獨列表的值重新加載數據。

reloadTopics工作得很好,數據正在重新填充,當表單提交時,我的所有選擇都正確地傳遞回服務器。 但是頁面加載時最初沒有選擇任何內容。

查看插件的源代碼,現在似乎不支持一次預選多個值。

您可以在此插件的 GitHub 存儲庫中注冊新問題。

至於解決方法,您可能可以使用一些額外的 JavaScript 代碼來完成。

問題的正確答案。 我只是發布解決方法,以防有人遇到同樣的問題。

最快和最簡單的解決方案是將您的值放入一個逗號分隔的字符串中,該字符串將被發送到頁面。

public String strutsActionToLoadPage() {
    List<Integer> selectedItemIds = new ArrayList<Integer>();
    /*
     * Prepare your data for the page
     */

    /*
     * Set up the comma-delimited string
     */
    this.selectedItemString = "";
    for (int y = 0; y < (selectedItemIds.size()-1); y++) {
        this.selectedItemString += selectedItemIds.get(y) + ",";
    }
    if (!selectedItemIds.isEmpty()) {
        this.selectedItemString += selectedItemIds.get(selectedItemIds.size()-1);
    }
    return SUCCESS;
}

public String getSelectedItemString() {
    return this.selectedItemString;
}
public void setSeletedItemString(String selectedItemString) {
    this.selectedItemString = selectedItemString;
}

然后,使用 javascript,將字符串轉換為數組,並在文檔准備好時設置<sj:select>元素的val()

$(document).ready(function() {
     var data = '<s:property value="selectedItemString" />';

     //Make an array, splitting on the commas
     var dataArray = data.split(",");

     // Set the value
     $("#itemSelect").val(dataArray);
});

這個問題幫助我解決了這個問題

不太理想,但功能齊全。

在jsp中使用jquery拆分字符串變量

$(document).ready(function() {

  var subAns = $("#submitedAnswer").val();

  var toSplit = subAns.split(",");
     for (var i = 0; i < toSplit.length; i++) {
      console.log(toSplit[i]);
     ..........
     ..........
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM