내 컨트롤러에 4 개의 요청 매개 변수로 requestMapping "searchUser"가 있습니다. 요청 매개 변수 "phoneNumber"의 경우 '(', ')', '-'및 '+'와 같은 특수 문자도 사용할 수 있습니다.특수 문자 '+'가 포함 된 RequestParam
'+'문자는 내 로그에 모든 문자가 표시됩니다. 예를 들어 "+123"또는 "123 + 1"과 같은 값을 보내면 컨트롤러에 "123"과 "123 1"이 표시됩니다. "+"를 공백으로 바꿉니다.
그것은 단지 '+'로 발생
@RequestMapping(method = RequestMethod.GET, value = "/search", produces = "application/json")
public List<User> getWebUserProfiles(HttpServletRequest request, HttpServletResponse response,
@RequestParam("firstName") String firstName, @RequestParam("lastName") String lastName,
@RequestParam("email") String email
@RequestParam("phoneNumber") String phoneNumber);
당신은 내가 추가 할 필요가 무엇인지 알고 계십니까?
미리 감사드립니다.
업데이트 : 양식이 있고 나는 나의 봄 부팅 백엔드에 추가로 값을 보낼 곳
내 프론트 엔드에 대한 각도 2를 사용. 내 http 서비스 각도 :
search(searchParams: any){
let params = new URLSearchParams();
params.set('firstName', searchParams.firstName);
params.set('lastName', searchParams.lastName);
params.set('email', searchParams.email);
params.set('phoneNumber', searchParams.phoneNumber);
return this._http.get(this.baseURL+'search',
{ search:params })
.map(response => response.json())
.catch(this.handleError);
}
왜냐하면''+''는 URL의 특수 문자이기 때문입니다. 웹 서버에''% 2C''로 보내보십시오. – f1sh
이것은 정상입니다. HTML 사양의 [양식 제출] (https://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.1) 섹션을 참조하십시오. URL을 어떻게 불러내나요? 브라우저의 HTML 폼에서 호출 된 경우 '+'는 자동으로 백분율 이스케이프 처리되어야합니다. – VGR
@ f1sh - % 2C은 쉼표이고, % 2B는 더하기 기호입니다. 그리고 덧글에 더 많은 것을 추가하려면, 공백에 대한 URL 이스케이프로 처리됩니다. 몇 가지 방법 중 하나. URL을 살펴보고 더 자세히 인코딩하십시오. – Quintium