Skip to content

Log message when @ModelAttribute on a void method has a name attribute #23877

@ravenblackdusk

Description

@ravenblackdusk

Affects: \5.1.9.RELEASE


given:

public abstract class AbstractestController {
    @ModelAttribute("checkC")
    public void checkC() {
        int a = 0;
    }
}

public abstract class AbstracterController extends AbstractestController {
    @ModelAttribute("checkB")
    public void checkB(@ModelAttribute("checkC") Void o) {
        int a = 0;
    }
}

public abstract class AbstractController extends AbstracterController {
    @ModelAttribute("checkA")
    public void checkA(@ModelAttribute("checkB") Void checkB) {
        int a = 0;
    }
}

@RestController
public class TestController extends AbstractController {
    @PostMapping("/test")
    public void test() {
    }
}

When POSTing to /test I expect all three check methods to be called. However checkB is not called.

Workaround:

public abstract class AbstractestController {
    @ModelAttribute("checkC")
    public Object checkC() {
        int a = 0;
        return new Object();
    }
}

public abstract class AbstracterController extends AbstractestController {
    @ModelAttribute("checkB")
    public Object checkB(@ModelAttribute("checkC") Object o) {
        int a = 0;
        return o;
    }
}

public abstract class AbstractController extends AbstracterController {
    @ModelAttribute("checkA")
    public Object checkA(@ModelAttribute("checkB") Object o) {
        int a = 0;
        return o;
    }
}

@RestController
public class TestController extends AbstractController {
    @PostMapping("/test")
    public void test() {
    }
}

Metadata

Metadata

Assignees

Labels

in: webIssues in web modules (web, webmvc, webflux, websocket)type: taskA general task

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions