首先,我对Grails很新!
所以这就是我的问题:
我有一份应该归类的批准者列表。我们的UI基本上如下:
每当用户按下“创建组”按钮时,表格中会添加一列复选框,如下所示:
现在我已经使用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_")
也不会拆分我的字符串。那么我怎么想在分组_?
答案 0 :(得分:0)
试试这是第二个问题:
String[] groups=(userAndGroup.toString()).split("group_")