2014-03-26 11 views
3
package com.lk 

class Stock { 
    static expose = 'stock' 
    long id 
    String symbol 
    String name 
    BigDecimal price 
    long sharevolume 
    long tradevolume 
    Float turnover 
    BigDecimal change 
    BigDecimal changePercentage 
    long quantity 
    /*Float open*/ 
    Float hiTrade 
    Float loTrade 
    Date tradesTransacttime 
    Float previousClose 

    static mapping = { 
      table 'VIEW_CD_TRADE_SUMMARY_NO_DEBT' 
      version false 
      autoTimestamp false 
     } 

    static api = 
      [ 
       excludedFields: ["errors", "attached", "properties"], 
       list: { params -> 
        if (params.code?.equals('gvt123')) { 
         if (params.exclude) { 
          api.excludedFields = ["errors", "attached", "properties"] 
          params.exclude.split(",").each { api.excludedFields << it?.trim() } 
         } else { 
          api.excludedFields = ["errors", "attached", "properties"] 
         } 

         //println("params -->("+params) 

         params.id ? Stock.findAllByIdInList(params.id.split(",").collect { it as long }) : Stock.list(params) 


        } else { 
         "Invalid Request" 
        } 
         }, 
       count: { params -> if(params.code?.equals('gvt123')) { 
              params.id ? Stock.countByIdInList(params.id.split(",").collect { it as long }) : Stock.count() 
             }else{ 
              0 
             }} 
      ] 

} 

請查找上面的Stock.groovy文件,當我運行它時,我得到以下異常。請幫助我。Grails伊爾格爾論據異常

URI /cses/json/stock 
Class java.lang.IllegalArgumentException 
Message null 

是否有任何處理異常的方法檢查哪些入口帶有故障值。如果需要我也可以添加Oracle視圖。

堆棧跟蹤低於

java.lang.IllegalArgumentException 
     at com.lk.Stock$__clinit__closure2.doCall(Stock.groovy:41) 
     at org.grails.plugins.rest.JsonRestApiController$_closure1.doCall(JsonRestApiController.groovy:14) 
     at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:195) 
     at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63) 
     at com.brandseye.cors.CorsFilter.doFilter(CorsFilter.java:63) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
     at java.lang.Thread.run(Thread.java:662) 
2014-03-26 09:58:54,463 [http-bio-8080-exec-70] ERROR errors.GrailsExceptionResolver - IllegalArgumentException occurred when processing request: [GET] /cses/json/stock 
Stacktrace follows: 
java.lang.IllegalArgumentException 
     at com.lk.Stock$__clinit__closure2.doCall(Stock.groovy:41) 
     at org.grails.plugins.rest.JsonRestApiController$_closure1.doCall(JsonRestApiController.groovy:14) 
     at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:195) 
     at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63) 
     at com.brandseye.cors.CorsFilter.doFilter(CorsFilter.java:63) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
     at java.lang.Thread.run(Thread.java:662) 
2014-03-26 09:58:57,676 [http-bio-8080-exec-71] ERROR errors.GrailsExceptionResolver - IllegalArgumentException occurred when processing request: [GET] /cses/json/stock 
Stacktrace follows: 
java.lang.IllegalArgumentException 
     at com.lk.Stock$__clinit__closure2.doCall(Stock.groovy:41) 
     at org.grails.plugins.rest.JsonRestApiController$_closure1.doCall(JsonRestApiController.groovy:14) 
     at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:195) 
     at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63) 
     at com.brandseye.cors.CorsFilter.doFilter(CorsFilter.java:63) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
     at java.lang.Thread.run(Thread.java:662) 
2014-03-26 10:08:36,170 [http-bio-8080-exec-83] ERROR errors.GrailsExceptionResolver - IllegalArgumentException occurred when processing request: [GET] /cses/json/stock 
Stacktrace follows: 
java.lang.IllegalArgumentException 
     at com.lk.Stock$__clinit__closure2.doCall(Stock.groovy:41) 
     at org.grails.plugins.rest.JsonRestApiController$_closure1.doCall(JsonRestApiController.groovy:14) 
     at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:195) 
     at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63) 
     at com.brandseye.cors.CorsFilter.doFilter(CorsFilter.java:63) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
     at java.lang.Thread.run(Thread.java:662) 
2014-03-26 10:08:42,807 [http-bio-8080-exec-3] ERROR errors.GrailsExceptionResolver - IllegalArgumentException occurred when processing request: [GET] /cses/json/stock 
Stacktrace follows: 
java.lang.IllegalArgumentException 
     at com.lk.Stock$__clinit__closure2.doCall(Stock.groovy:41) 
     at org.grails.plugins.rest.JsonRestApiController$_closure1.doCall(JsonRestApiController.groovy:14) 
     at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:195) 
     at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63) 
     at com.brandseye.cors.CorsFilter.doFilter(CorsFilter.java:63) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
     at java.lang.Thread.run(Thread.java:662) 
2014-03-26 10:09:03,060 [http-bio-8080-exec-29] ERROR errors.GrailsExceptionResolver - IllegalArgumentException occurred when processing request: [GET] /cses/json/stock 
Stacktrace follows: 
java.lang.IllegalArgumentException 
     at com.lk.Stock$__clinit__closure2.doCall(Stock.groovy:41) 
     at org.grails.plugins.rest.JsonRestApiController$_closure1.doCall(JsonRestApiController.groovy:14) 
     at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:195) 
     at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63) 
     at com.brandseye.cors.CorsFilter.doFilter(CorsFilter.java:63) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
     at java.lang.Thread.run(Thread.java:662) 
2014-03-26 10:45:28,004 [http-bio-8080-exec-97] ERROR errors.GrailsExceptionResolver - IllegalArgumentException occurred when processing request: [GET] /cses/json/stock 
Stacktrace follows: 
java.lang.IllegalArgumentException 
     at com.lk.Stock$__clinit__closure2.doCall(Stock.groovy:41) 
     at org.grails.plugins.rest.JsonRestApiController$_closure1.doCall(JsonRestApiController.groovy:14) 
     at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:195) 
     at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63) 
     at com.brandseye.cors.CorsFilter.doFilter(CorsFilter.java:63) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
     at java.lang.Thread.run(Thread.java:662) 
2014-03-26 10:59:15,551 [http-bio-8080-exec-60] ERROR errors.GrailsExceptionResolver - IllegalArgumentException occurred when processing request: [GET] /cses/json/stock 
Stacktrace follows: 
java.lang.IllegalArgumentException 
     at com.lk.Stock$__clinit__closure2.doCall(Stock.groovy:41) 
     at org.grails.plugins.rest.JsonRestApiController$_closure1.doCall(JsonRestApiController.groovy:14) 
     at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:195) 
     at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63) 
     at com.brandseye.cors.CorsFilter.doFilter(CorsFilter.java:63) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
     at java.lang.Thread.run(Thread.java:662) 
2014-03-26 13:18:22,183 [http-bio-8080-exec-62] ERROR errors.GrailsExceptionResolver - IllegalArgumentException occurred when processing request: [GET] /cses/json/stock 
Stacktrace follows: 
java.lang.IllegalArgumentException 
     at com.lk.Stock$__clinit__closure2.doCall(Stock.groovy:41) 
     at org.grails.plugins.rest.JsonRestApiController$_closure1.doCall(JsonRestApiController.groovy:14) 
     at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:195) 
     at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63) 
     at com.brandseye.cors.CorsFilter.doFilter(CorsFilter.java:63) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadP... 

更新 - 添加堆棧跟蹤。
謝謝。

+0

發佈完整的堆棧跟蹤 – injecteer

+2

我不知道「有什麼辦法處理異常,檢查哪些入口帶有故障值。」手段。 如果您可以創建一個簡單的示例應用程序並將其發佈到github以及如何在應用程序內重新創建問題的說明,那幾乎肯定會導致解決方案。 –

+0

Stock.groovy的第41行是什麼? –

回答

0

顯然,錯誤的是你們班的41行,我認爲這是:

params.id ? Stock.findAllByIdInList(params.id.split(",").collect { it as long }) : Stock.list(params) 

你肯定params.id是用逗號分隔多頭的字符串?

還請注意collect方法返回的是java.lang.Long的列表,而不是您想要的基元long。爲什麼不嘗試更改爲java.lang.Long以獲得Stock類的id屬性? (實際上,我建議始終使用包裝類)。