如何根据grails中的字符串拆分字符串?

时间:2014-08-08 10:01:45

标签: javascript grails data-binding

首先,我对Grails很新!

所以这就是我的问题:

我有一份应该归类的批准者列表。我们的UI基本上如下:

enter image description here

每当用户按下“创建组”按钮时,表格中会添加一列复选框,如下所示:

enter image description here

enter image description here

现在我已经使用JS添加了这些复选框列,如下所示

function onAddGroupClicked(urlFromGsp){
            var totalGroup = getTotalGroupCount();
            addGroupInHeader(totalGroup);
            addUserGroups(totalGroup)
}

function addGroupInHeader(totalGroup){

    var groupId="group_"+totalGroup;
    var groupCheckBox =$("<input type='checkbox' name='userGroupCheckBox'>");
    groupCheckBox.attr("id",groupId);

    var th=$("<th>");
    th.css("width","100px");
    th.append(groupCheckBox);
    th.append("Group"+""+totalGroup);
    $("#approver-group-table-header").append(th);
}

function addUserGroups(totalGroup){
    $("#approver-group-table-body tr").each(function(){
        var userId = $(this).attr("id");
        var  id = userId.split("_");
        var checkBoxId="group_"+totalGroup+"_user_"+id[1];
        var checkBox =$("<input type='checkbox' name='userGroupCheckBox'>");
        checkBox.attr("id",checkBoxId);
        checkBox.attr("value",checkBoxId);
        var td = $("<td>");
        td.append(checkBox)
        $(this).append(td);
    });
}

function getTotalGroupCount(){
    var noOfGroupsCreated= $("#approver-group-table-header").find("input[type='checkbox']").length;
    var totalGroup =parseInt(noOfGroupsCreated);
    return totalGroup;
}

我的gsp页面如下所示

 <g:form action="saveUserGroup">
        <div id="scrollable-div" style="overflow:auto;max-width:1000px;min-width:500px; margin-top:-1px;">
       <div id="inner-scrollable-div" style="max-width:10000px;">
        <table id="approver-group-table" class="table table-bordered table-striped" style="margin-top:80px;">
            <thead >
            <tr id="approver-group-table-header">
                <th><g:message code="approverGroup.corporateHouseUser.label" default="S.No"/></th>
            <g:sortableColumn property="personName"
                              title="${message(code: 'approverGroup.groupId.label', default: 'Name')}"/>

            <g:sortableColumn property="username"
                              title="${message(code: 'approverGroup.dateCreated.label', default: 'Login Id')}"/>

            %{--<th>Rule : <g:select name="rule" from="${ApproverGroupRule.values()}"--}%
                                 %{--noSelection="['': '- Select -']" autofocus="true"/></th>--}%
            %{--<th><g:checkBox name="firstGroupSelectAll" id="group-a-select-all" onClick="onGroupASelectAll()"/> Group A</th>
            <th><g:checkBox name="secondGroupSelectAll" id="group-b-select-all" onClick="onGroupBSelectAll()"/>Group B</th>--}%
        </tr>
        </thead>
        <tbody id="approver-group-table-body">
        <g:each in="${corporateHouseApproverList}" status="i" var="corporateHouseApprover">
            <tr class="${(i % 2) == 0 ? 'even' : 'odd'}" id="user_${corporateHouseApprover.user.id}" >
                <td>${i + 1}</td>
                <td>${fieldValue(bean: corporateHouseApprover, field: "personName")}</td>
                <td>${fieldValue(bean: corporateHouseApprover, field: "user.username")}</td>
                %{--<g:if test="${corporateHouseApprover.groupId==-1}">
                    <td><g:checkBox class="group_1" name="group_1" value="${corporateHouseApprover.user.id}" id="user_${corporateHouseApprover.user.id}" ></g:checkBox></td>
                    <td><g:checkBox class="group_2" name="group_2" value="${corporateHouseApprover.user.id}" id="user_${corporateHouseApprover.user.id}"></g:checkBox></td>
                </g:if>--}%
                %{--<g:else>
                     <g:if test="${corporateHouseApprover.groupId==2}">
                         <td><g:checkBox class="group-a" name="groupA" value="${corporateHouseApprover.user.id}" checked="checked"></g:checkBox></td>
                     </g:if>
                    <g:if test="${corporateHouseApprover.groupId==3}">
                        <td><g:checkBox class="group-a" name="groupB" value="${corporateHouseApprover.user.id}" checked="checked"></g:checkBox></td>
                    </g:if>

                </g:else>--}%

            </tr>
        </g:each>

        </tbody>
    </table>
       </div>
        </div>
    <g:submitButton name="submit"/>
</g:form>

%{--<div id="scrollable-div" style="overflow:scroll;max-width:500px;">--}%
%{--<div id="inner-scrollable-div" style="max-width:10000px;">
</div>
</div>--}%
</div>

现在,在将组保存到数据库时,我按照以下方式解析grails控制器中的参数值:

def saveUserGroup(){
       String userGroups=params.userGroupCheckBox.toString()
       userGroups=userGroups.replace("[","")
       userGroups=userGroups.replace("]","")
       String[] usersAndGroups=userGroups.split(",")
       for(String userAndGroup : usersAndGroups){

           String[] groups=userAndGroup.split("group_")
           for(def group : groups){

               String[] groupAndUser= group.split("_user_")

           }
       }

       redirect(action: approverList)
    }
}

我知道这绝对不是根据我的要求对用户进行分组的有效方法,因为需要在控制器中完成大量的解析,而且我还没有利用数据绑定(我不确定我是否可以使用数据绑定功能这里) 。那么做我应该做的更好的方法是什么?如何在控制器中绑定动态创建的复选框的值?

另一个问题是

即使我的字符串包含&#34; group_0_user_1&#34;

String[] groups=userAndGroup.split("group_")也不会拆分我的字符串。那么我怎么想在分组_?

之后拆分这个字符串和其他类似的字符串呢

1 个答案:

答案 0 :(得分:0)

试试这是第二个问题:

String[] groups=(userAndGroup.toString()).split("group_")