Dilbert789
Dilbert789

Reputation: 904

Spring MVC is dropping a @PathVariable

If I hit the controller multiple times and hammer it, occasionally my modelCode parameter comes through as null. However the URL has the modelCode in it. Using Spring Framework 3.0.5.RELEASE

 @RequestMapping(value="ws/getallvariants/{channelCode}/{modelCode}/{regionId}/{year}")
    public ModelAndView getAllVariants(@PathVariable("channelCode") String channelCode, 
          @PathVariable("modelCode") String modelCode,@PathVariable("regionId") String regionId,@PathVariable("year") String year){ 

if (modelCode == null) { int i = 0; // this should never hit, but does. }

Upvotes: 3

Views: 4012

Answers (4)

Fareed Alnamrouti
Fareed Alnamrouti

Reputation: 32154

//in your xml dispatcher  add this property to your default annotation mapper bean as follow
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
    <property name="alwaysUseFullPath" value="true"></property>
</bean>       

Upvotes: 0

Dilbert789
Dilbert789

Reputation: 904

Updating the spring framework again to the latest version appears to have worked. Apparently when we updated our framework something didn't work correctly.

EDIT:

So this wasn't our issue at all... We had implemented a String Trimmer Editor incorrectly and it was keeping state. So when we put the call under load it would cross results.

Upvotes: 0

Todd
Todd

Reputation: 31

Yes, RegEx was the most reliable for me as well. Did this to grab an email address as a parameter:

@RequestMapping(value = "rest/userreadserv/search/{email:.+}", method = RequestMethod.GET)
public ResponseEntity getUserAccountByEmail(@PathVariable String email) {...}

Upvotes: 3

Ted Pennings
Ted Pennings

Reputation: 1039

Take a look at Spring MVC @PathVariable getting truncated . The regex approach worked for me:

@RequestMapping({ "/servers/{serverName:.+}" })

Upvotes: 1

Related Questions