Grails Goodness: Type Conversion on Parameters

    技术2025-04-20  21

    With Grails we get a lot of extra support for handling request parameters. We can convert a request parameter value to a specific type with a simple method invocation. Grails adds for example the method int() to the parameter so we can return the request parameter value converted to an int. Grails adds several methods like byte(), long(), boolean() we can use in our code.

    class SimpleController { def submit = { def intValue = params.int('paramInt') def shortValue = params.short('paramShort') def byteValue = params.byte('paramByte') def longValue = params.long('paramLong') def doubleValue = params.double('paramDouble') def floatValue = params.float('paramFloat') def booleanValue = params.boolean('paramBoolean') [ intValue: intValue, shortValue: shortValue, byteValue: byteValue, longValue: longValue, doubleValue: doubleValue, floatValue: floatValue, booleanValue: booleanValue ] }  

    We can run the following testcase to test the various parameter types and values

    import grails.test.* class SimpleControllerTests extends ControllerUnitTestCase { void testParams() { controller.params.paramInt = '42' controller.params.paramShort = '128' controller.params.paramByte = '8' controller.params.paramLong = '90192' controller.params.paramDouble = '12.3' controller.params.paramFloat = '901.22' controller.params.paramBoolean = 'true' def result = controller.submit() assertEquals 42, result.intValue assertEquals 128, result.shortValue assertEquals 8, result.byteValue assertEquals 90192L, result.longValue assertEquals 12.3, result.doubleValue assertEquals 901.22f, result.floatValue assertTrue result.booleanValue } void testInvalidParams() { controller.params.paramInt = 'test' def result = controller.submit() assertNull result.intValue } void testBooleanParam() { controller.params.paramBoolean = 'false' def result = controller.submit() assertFalse result.booleanValue } }  

    最新回复(0)