== Why is this an issue? Spring Expression Language (SpEL) is an expression language used in the Spring Framework for evaluating and manipulating objects, properties, and conditions within Spring-based applications. `org.springframework.ui.Model` is an interface in the Spring Framework that represents a container for data that can be passed between a controller and a view in a Spring MVC web application, allowing for data sharing during the request-response cycle. Attributes added to the `org.springframework.ui.Model` should follow the Java identifier naming convention, which means they must start with a letter `a-z, A-Z`, underscore `_`, or a dollar sign `$` and may be followed by letters, digits, underscores, or dollar signs. Failure to do so may result in SpEL parsing errors when using these attributes in template engines. == How to fix it Follow the Java identifier naming convention. === Code examples ==== Noncompliant code example [source,java,diff-id=1,diff-type=noncompliant] ---- model.addAttribute(" a", 100); // Noncompliant (starts with a space) model.addAttribute("a-b", 7); // Noncompliant (contains a hyphen) model.addAttribute("1c", 42); // Noncompliant (starts with a digit) ---- ==== Compliant solution [source,java,diff-id=1,diff-type=compliant] ---- model.addAttribute("a", 100); model.addAttribute("b", 42); model.addAttribute("_c", 7); model.addAttribute("$d", 8); ---- == Resources === Documentation * https://www.oracle.com/java/technologies/javase/codeconventions-namingconventions.html[Java SE - naming conventions] * https://docs.spring.io/spring-framework/reference/core/expressions.html[Spring Expression Language (SpEL)] * https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/ui/Model.html[Spring IO Docs - Interface Model]