2016-07-15 14 views
2

Ich schrieb bereits einige Code für meine Feder mvc Controller zum Abrufen von Mitarbeiter Anwesenheitsrekord aus einer einzigen Spalte aus meiner Tabelle mit Lambda-Expression-Filter. Aber ich möchte die gleiche Logik in meinem Grails Controller anwenden.Wie Java Lambda-Ausdruck Filterung in Grails anwenden

Werfen Sie einen Blick in screen Geröll.

Dank

Antwort

1

wenn ich es richtig (Zählen der Datensätze) zu verstehen, Sie so etwas wie versuchen könnte:

long totalAbsentDays 
= presentMonthAtten.findAll{ it.status == Constant.ABSENT }.size() 
+0

Scheint gut, aber was ist die Bedeutung „es“ nach geschweiften Klammern? – Ranjan

+0

O danke ich habe es. – Ranjan

+0

es ist die Standard-Iterator-Variable, die automatisch verfügbar ist. Sie könnten den Namen der Iteratorvariablen auch selbst über 'presentMonthAtten.findAll {record -> record.status == Constant.ABSENT} .size()' – susi

3

In Ihrem Fall die straight-forward Weg, um die gleiche Sammlung iterieren 4 (!! !) mal und spawn 4 neue Kollektionen ist auch am wenigsten performant.

ich es so sagen würde:

import static Constant.* 

def data = presentMonthAtten.inject([:].withDefault{ 0 }){ accum, record -> 
    switch(record.status){ 
    case ABSENT: accum.absent++; break 
    case PRESENT: accum.present++; break 
    // other cases 
    } 
    accum 
} 

//.... 
attendDashBoard.currentMonthAbsentAttn = data.absent.toString() 
+0

Wow..Ich werde dies implementieren, wenn ich jedes Problem habe, werde ich Sie wissen lassen und mich einfach führen. – Ranjan

+0

Hier bekomme ich Exception, keine solche Eigenschaft: materialStatus für die Klasse: java.lang.String === poStatus = PurchaseOrder.executeQuery ('MaterialStatus von PurchaseOrder' auswählen) def data = poStatus.inject ([:]. WithDefault {0}) {accum, record -> switch (record.materialStatus) {, In meiner Bestellung gibt es einen variablen MaterialStatus. – Ranjan

+0

Sie versuchen, auf die Eigenschaft 'materialStatus' des String-Objekts zuzugreifen. Sieht so aus als würdest du 'switch (record) {...}' ' – injecteer