Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Struts2 Jquery多选值_Jquery_Jsp_Struts2_Struts2 Jquery_Struts2 Jquery Plugin - Fatal编程技术网

Struts2 Jquery多选值

Struts2 Jquery多选值,jquery,jsp,struts2,struts2-jquery,struts2-jquery-plugin,Jquery,Jsp,Struts2,Struts2 Jquery,Struts2 Jquery Plugin,我正在做一件非常简单的事情。我正在使用Struts2 Jquery插件,我的页面上有一个。它被设置为多个。我有一个要预先选择的值数组,但没有设置任何值。如果我在value标签中给它一个项目,那么这个项目就被选中了。如果我将整数的ArrayList或整数的集合(仍然是ArrayList的实例)或逗号分隔的字符串100101102传递给该值,则不会选择任何内容。我尝试过传递一个简单的整数数组Integer[],这将至少选择数组中的第一项,但仅此而已。所有其他的显然都被丢弃了。我无法理解我做错了什么,

我正在做一件非常简单的事情。我正在使用Struts2 Jquery插件,我的页面上有一个。它被设置为多个。我有一个要预先选择的值数组,但没有设置任何值。如果我在value标签中给它一个项目,那么这个项目就被选中了。如果我将整数的ArrayList或整数的集合(仍然是ArrayList的实例)或逗号分隔的字符串100101102传递给该值,则不会选择任何内容。我尝试过传递一个简单的整数数组Integer[],这将至少选择数组中的第一项,但仅此而已。所有其他的显然都被丢弃了。我无法理解我做错了什么,或者我能做些什么来让这一切顺利进行

这最初是一个常规的Struts2 select,它与传递给value标记的整数数组列表配合得非常好。我已更改为Jquery插件版本,因为我需要根据单独列表的值重新加载数据


重新加载的主题工作得非常好,数据正在重新填充,当表单提交时,我的所有选择都正确地传递回服务器。但是当页面加载时,最初没有选择任何内容。

查看插件的源代码,现在似乎不支持一次预先选择多个值

您可以在该插件的中注册新版本


至于解决方法,您可能需要一些额外的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;
}
帮我解决了这个问题


不太理想,但功能强大。

在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]);
     ..........
     ..........
  }
});

善意的struts2 jQuery插件混淆了一个简单的JavaScript库。你可以使用支持插件的UI库,而不会像插件所建议的那样让人头痛,除了那些发誓要做web编程,同时避免学习JavaScript的少数人。我自己实现JavaScript没有问题。事实上,我已经做到了这一点,并手动实现了相同的最终结果。但这感觉像是一个粗糙的解决方法,我看不到任何迹象表明这是插件中的错误。我真的很想知道问题出在哪里。我的设置是否有问题,或者struts jquery multi-select的值标记是否不起作用?这个插件确实很挑剔,但我从来没有遇到过我最终弄不明白的事情。使用这些标签是一种黑客行为。。。如果使用JS看起来像是一种黑客行为,那么可能需要重新考虑因素。JavaScript非常可读,从维护的角度来看,JS比这些标记更容易访问。从价值的角度来看,花在学习任何JS库上的时间都是花在学习上的时间。好吧,我尽了我的责任,说这样的话就是疯狂!但是,如果你坚持认为这个页面已经解决了所有问题,尽管我已经明确指出我不是一个粉丝,但支持它的精彩文档给我留下了深刻的印象:@CurtisSnowden虽然你的解决方法不是直接回答你的问题,但我仍然建议你将其作为答案发布。也许有一天它会帮助某人如果你决定发帖,我会投你的票。当然,我能做到。我不确定它是否会违反规则或其他什么,所以我很安全。
$(document).ready(function() {

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

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