【问题标题】:Best way to loop through arraylist in grails在grails中循环遍历arraylist的最佳方法
【发布时间】:2017-08-21 08:25:50
【问题描述】:

我正在向我的控制器发送字符串数组,其中包含 Id 数组。

function submit(){
        var ids = [];
        bootbox.confirm("Are you sure to send data?", function(confirmed){
            if(confirmed){
                $('input[id^="tdCheckbox_"]').each(
                    function () {
                        var $this = $(this);
                        if($this.is(":checked")){
                            ids.push($this.attr("id").replace("tdCheckbox_",""));
                        }
                    }
                );

                $("#Ids").val(ids);
                $("#submitForm").submit();
            }
        });
}

<g:formRemote name="submitForm"  url="[controller:'myController', action:'submit']" onSuccess="removeIds(data)">
    <g:hiddenField name="Ids" />
</g:formRemote>

控制器:

def submit(){
        def result = [success:false]
        if(params?.Ids){
            String[] ids = params?.Ids
            ids.eachWithIndex{ it, int i ->
                //HERE OUTPUT IS LIKE 
                //4 
                //,
                //5
                //,
                //6
                println(it.value)
            }

            result["id"] = params?.Ids
        }

        render result as JSON
    }

在 eachWithIndex 循环中,我得到了不需要的输出,(逗号),我认为必须有一个很好的选项来循环它。

请提出相同的建议。

【问题讨论】:

  • 我相信这个问题应该属于codereview社区

标签: javascript arrays grails arraylist groovy


【解决方案1】:

您从 javascript 提交的问题是一个字符串值(id 用逗号分隔)

ids=1,2,33

在 groovy/grails 级别上,params?.Ids 只返回一个字符串,如下所示:"1,2,33"

并将String 分配给String[] 只是将其拆分为字符...

作为 groovy 中的解决方法,您可以使用 params?.Ids?.split(',')

String[] ids = "1,2,33".split(',')

或者像这样从javascript提交多个值:

ids=1 & ids=2 & ids=33

在这种情况下,如果提交了多个同名值,grails 将返回一个数组,表示 params?.Ids 表达式

【讨论】:

  • 不应该 params.list('Ids') 解决问题吗?编辑:另外 - ajax 标签已被弃用 - 我建议考虑为这些标签制定迁移策略。
猜你喜欢
  • 1970-01-01
  • 2020-06-15
  • 1970-01-01
  • 2014-10-25
  • 2019-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多