繁体   English   中英

使用groovy / grails获取参数类型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM