Skip to content

Conversation

codeconsole
Copy link
Contributor

@codeconsole codeconsole commented Oct 19, 2025

Fix for #15147

Commit 7c56295 fixed issue #14947 by changing initializeStringParameter to use localVarX, but didn't apply the same fix to initializePrimitiveOrTypeWrapperParameter which broke my app. This just applies the same fix consistently.

@github-actions github-actions bot added the bug label Oct 19, 2025
@jdaugherty
Copy link
Contributor

Lets add a test for this to merge

@codeconsole
Copy link
Contributor Author

@jdaugherty you should be able to replicate via a simple controller

package data.binding.bug

import grails.converters.JSON

class TestController {

    def show(String id) { // success
        render([success: true] as JSON)
    }

    def submit(long id, long imageId) { // error: Cannot cast object '###' with class 'java.lang.String' to class 'long'.
        render([success: true] as JSON)
    }

    def dq(Long id, Long imageId) {  // error: Cannot cast object '###' with class 'java.lang.String' to class 'long'.
        render([success: true] as JSON)
    }
}
curl "http://localhost:8080/test/submit/123456789.json?imageId=123456789"
2025-10-20T11:07:28.035-07:00 ERROR 34235 --- [nio-8080-exec-4] o.g.web.errors.GrailsExceptionResolver   : GroovyCastException occurred when processing request: [GET] /test/submit/123456789.json - parameters:
imageId: 123456789
Cannot cast object '123456789' with class 'java.lang.String' to class 'long'. Stacktrace follows:

java.lang.reflect.InvocationTargetException: null
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:110)
        at org.grails.core.DefaultGrailsControllerClass$ReflectionInvoker.invoke(DefaultGrailsControllerClass.java:215)
        at org.grails.core.DefaultGrailsControllerClass.invoke(DefaultGrailsControllerClass.java:192)
        at org.grails.web.mapping.mvc.UrlMappingsInfoHandlerAdapter.handle(UrlMappingsInfoHandlerAdapter.groovy:110)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
        at org.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:80)
        at org.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:70)
        at java.base/java.lang.Thread.run(Thread.java:1447)
Caused by: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '123456789' with class 'java.lang.String' to class 'long'
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
        ... 11 common frames omitted

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants