0

ここでは、必要な文字列キーを DRY にしようとしているだけですが、機能する唯一の方法は、文字列を直接割り当てに入れることです: request['RequestStopwatch.start'] = System.currentTimeMillis().

ポインタはありますか?

class RequestStopwatchFilters {

    def REQ_KEY = 'RequestStopwatch.start'

    def filters = {
        all(controller:'*', action:'*') {

            before = {

                log.debug(""+System.currentTimeMillis() + " " + request)
                // NULL pointer exception on REQ_KEY here:
                request[REQ_KEY] = System.currentTimeMillis()
            }
            after = { Map model ->
                if (log.isDebugEnabled()) {
                    // NULL pointer exception on REQ_KEY here:
                    log.debug("Stopped request before view at " + (System.currentTimeMillis() - request[REQ_KEY]) + "ms")
                }
            }
            afterView = { Exception e ->
                if (log.isDebugEnabled()) {
                    // NULL pointer exception on REQ_KEY here:
                    log.debug("Stopped request at " + (System.currentTimeMillis() - request[REQ_KEY]) + "ms")
                }
            }
        }
    }
}
4

1 に答える 1

1

次のように、staticまたはそれ以上にしますpublic final static

class RequestStopwatchFilters {

    public final static String REQ_KEY = 'RequestStopwatch.start'
}

次のようにどこでも使用できます。

RequestStopwatchFilters.REQ_KEY    
于 2012-04-21T17:29:58.893 に答える