2013-03-20 1 views
0

컨트롤러 메소드에 대해 다음 @RequestMapping이 정의되어 있습니다. 는 JSP에서 RequestMapping에 매개 변수가 정의되어있을 때 Spring이 Handler를 결정하는 방법

@RequestMapping(value = "{transactionId}/continue", params = "submitButton=enterApplication") 

는, 나는 다음과 같은 버튼 정의 :

<button type="submit" name="submitButton" id="button.enterApplication" value="enterApplication"> 
Enter Application 
</button> 

모든 최신 브라우저와 함께 작동합니다. 다음은 요청에 제출 :

submitButton=enterApplication 

하지만 IE7은 (아마도 이전뿐만 아니라) 브라우저 버튼 태그 대신 값 속성의 내용을 제출한다과 같습니다. 따라서이 경우, 다음과 같은 제출한다 : 대신 공간의 '+'기호

submitButton=Enter+Application 

주 (피들러를 사용하여, 내가 요청을 검사 할 수 있었고, 위의 매개 변수/값을 가지고 본 '+ '). 나는 이것이 내 문제가있는 곳이라고 확신하지만, 그것에 대해 어떻게해야할지 모르겠습니다. 다음 @RequestMapping을 사용하여 다른 메서드를 추가하려고 시도했습니다.

@RequestMapping(value = "{transactionId}/continue", params = "submitButton=Enter+Application") 

그러나 이것은 작동하지 않는 것 같습니다.

javax.servlet.ServletException: No adapter for handler [...]: Does your handler implement a supported interface like Controller? 

@RequestMapping의 정의 PARAMS와 요청에 제출되는 내용 비교하기 위해 무엇을하고 있는지 논리 봄 결정하는 방법이 있나요 : 나는 다음과 같은 오류가 계속? 나는 공간이나 '+'문자를 비교하는 데 문제가 있다고 생각하고 있습니다.

* 참고 : 문제는 반드시 초기 생각이었던 더하기 문자가 아닐 수도 있습니다. Spring이 처리기를 어떻게 결정하는지 알아낼 수 있다면 왜 일치하지 않는지 파악할 수있을 것입니다.

+1

IE7에서'params = "submitButton = Enter Application"을 시도해보십시오. –

+0

이것은 실제로 효과가있었습니다. 처음에 왜 작동하지 않았는지 확실하지 않습니다. 감사. – Mostfoolish

답변

0

Sotirios Delimanolis '대답이 정확했습니다. 왜 그것이 원래 작동하지 않았는지 나는 완전히 확신하지 못합니다.

요약하면 다음과 같은 RequestMapping이 올 바릅니다.

@RequestMapping (값 = "{transactionId는}/계속", PARAMS = "submitButton = 응용 프로그램을 입력"), 다른 RequestMappings 여러 방법을 만들기 위해 우리가 이전 버전의 브라우저를 지원하지하기 위해,

또한 값 속성을 제거하고 버튼 태그의 내용에 의존하기로 결정했습니다.

버튼이 이제 다음과 같이 보입니다.

<button type="submit" name="submitButton" id="button.enterApplication"> 
Enter Application 
</button> 
0

제출 버튼 값을 사용하여 매개 변수를 보내지 않고 양식에 숨겨진 필드를 넣을 수 있습니다. 제출 버튼에서 value="enterApplication"를 제거하고 양식에 이런 식으로 뭔가를 넣어 :

<input type="hidden" value="enterApplication" name="myParameterName"/> 

그럼 그냥 컨트롤러의 메소드 서명에 매개 변수를 추가 :

@RequestMapping(value = "{transactionId}/continue") 
public void myControllerMethod(@RequestParam String myParameterName) 
.... 
+0

숨겨진 필드로 만들 수 없습니다. 단추가되어야합니다. – Mostfoolish

+0

당신은 여전히 ​​버튼을 가지고있을 것이고, 그 값은 단지 버튼 대신에 숨겨진 필드에서 왔을 것입니다. – clav

+0

오. 어쩌면 버튼 태그 안에 숨겨진 필드를 중첩 할 수 있습니까? – Mostfoolish

0

를위한 paramValue.equals(request.getParameter(paramName))을 사용하는 "paramName에 = paramValue" 형태.

관련 문제