[英]Get parameter type using groovy/grails
我将问题分为两部分,第一部分是我的实际问题,第二部分是标题问题。
首先:我有一个显示数据列表的表,并且我试图定义一种过滤器方法以从表中搜索值并呈现结果,按名称搜索有效,但按日期无效。 我有以下代码:视图:
<g:form class="input-group custom-search-form" id="searchsession">
<div><input type="text" class="form-control" name="searchValue" placeholder="Search for Name, IMSI"></div>
<div class='input-group date' id='datetimepicker1'>
<input type='text' class="form-control" name ="searchDateFrom" placeholder="search Date From"/>
<span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
<div class='input-group date' id='datetimepicker2'>
<input type='text' class="form-control" name="searchDateTo" placeholder="search Date To"/>
<span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
<div class="form-group">
<span class="input-group-btn">
<g:submitToRemote
class="btn btn-default submitBtn"
action="filter"
update="listTable" value="Filter"
onLoading="showLoading('listTable')"
onLoaded="dismissLoading('listTable')"/>
</span>
</div>
</g:form>
<script type="text/javascript">
$(function () {
$('#datetimepicker1').datetimepicker();
});
</script>
<script type="text/javascript">
$(function () {
$('#datetimepicker2').datetimepicker();
});
</script>
控制器方法:
class SessionController extends BaseController {
public static Date format(String val){
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy HH:mm a")
return sdf.parse(val)
}
def filter(Integer max){
println params
params.max = Math.min(max ?:DEFAULT_MAX_PER_PAGE, 100)
def result = Session.createCriteria().list(max: params.max, offset: params.offset) {
if (params.searchValue && params.searchValue != 'null') {
createAlias("imsi","I")
createAlias("imsi.subscriber","S")
or {
ilike("I.imsi", params.searchValue.toLowerCase() + "%")
ilike("S.name", params.searchValue.toLowerCase() + "%")
}
}
if (params.seachDateFrom && params.searchDateFrom != 'null' && params.searchDateTo && params.searchDateTo != 'null'){
createAlias("imsi.subscriber","S")
and{ ge("S.connectTime",format(params.searchDateFrom))
le("S.disconnectTime",format(params.searchDateTo))
}
}
order("imsi", "asc")
}
render(template: 'listTable', model: [sessionList: result, sessionListTotal: result.totalCount, fromDate:params.searchDateFrom,
toDate: params.searchDateTo, searchValue: params.searchValue, max: params.max, offset: params.offset])
}
}
编辑:涉及的域类是:
class Session {
String id
Imsi imsi
Date connectTime
Date disconnectTime
}
class Imsi {
String id
String imsi
Subscriber subscriber
}
第二部分是如何获取参数的类型,以了解是否获取日期类型或字符串,以及如何解析我的参数。
我认为您缺少嵌套的“连接”闭包:
def result = Session.createCriteria().list(max: params.max, offset: params.offset) {
if (params.searchValue && params.searchValue != 'null') {
imsi{
or {
ilike "imsi", params.searchValue.toLowerCase() + "%"
subscriber{ ilike "name", params.searchValue.toLowerCase() + "%" }
}
}
}
if (params.seachDateFrom && params.searchDateFrom != 'null' && params.searchDateTo && params.searchDateTo != 'null'){
imsi{
ge "connectTime", format(params.searchDateFrom)
le "disconnectTime", format(params.searchDateTo)
}
}
order "imsi", "asc"
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.