springmvc controller 간 재 정립 밴드 파라미터 도약 솔 루 션
5113 단어 springmvc
전통 적 인: redirect: select. do? id = "& name =" 을 통 해이렇게 연결 하여 실현 할 수도 있 지만 매개 변수 에 중국어 가 있 으 면 문제 가 생 길 수 있다.
RedirectAttributes
RedirectAttributes 는 spring 입 니 다. mvc 3.1 버 전 이후 에 나 온 기능 은 방향 을 바 꾼 후에 도 매개 변 수 를 가지 고 점프 할 수 있 습 니 다. 여 기 는 addAttribute 방법 을 사용 합 니 다. 이것 은 실제 적 으로 과거 로 방향 을 바 꾼 후에 url 을 보 세 요. 이것 은 자동 으로 당신 의 url 을 맞 춘 것 입 니 다.그 는 두 가지 인삼 을 가 진 방식 이 있다. 첫 번 째 는: attr.addAttribute("param", value); 이러한 방식 은 방향 을 바 꾼 후에 url 뒤에 파 라 메 터 를 연결 하 는 것 과 같 습 니 다. 그러면 방향 을 바 꾼 페이지 나 컨트롤 러 에서 url 뒤의 파 라 메 터 를 가 져 오 면 됩 니 다. 그러나 이 방식 은 url 뒤에 파 라 메 터 를 추가 하 는 방식 이기 때문에 파 라 메 터 를 노출 시 켰 습 니 다. 위험 사례 가 있 습 니 다.
1
2
3
attr.addAttribute(
"name"
,
"123"
);
attr.addAttribute(
"success"
,
"success"
);
return
"redirect:/index"
;
return "redirect: / index? name = 123 & success = success" 두 번 째: attr.addFlashAttribute("param", value); 이 방식 도 다시 참조 할 수 있 고 파 라 메 터 를 숨 길 수 있 습 니 다. 그 원 리 는 session 에 넣 고 session 은 페이지 로 건 너 간 후 바로 대상 을 제거 하 는 것 입 니 다.그래서 새로 고침 하면 이 값 은 예 를 잃 어 버 립 니 다:
1
2
3
attr.addFlashAttribute(
"status"
,
"999"
);
attr.addFlashAttribute(
"message"
,
" "
);
return
"redirect:/toLogin"
;
이러한 방식 은 확실히 방향 을 바 꿀 수 있 지만 문제 가 있 습 니 다. 이것 은 페이지 로 만 바 꿀 수 있 습 니 다. 즉, 방향 을 바 꾸 는 이 페이지 보 기 는 el 표현 식 으로 인삼 의 값 을 직접 가 져 올 수 있 습 니 다. 예 를 들 어 status. 메시지 ,다 구 할 수 있어. 그러나 제 가 다른 컨트롤 러 로 방향 을 바 꾸 었 을 때 이 컨트롤 러 에서 이 두 개의 인 자 를 얻 을 수 없습니다. 저 는 지금 필요 한 것 이 있 습 니 다. 로그 인 에 성공 하고 다른 페이지 로 직접 방향 을 바 꾸 었 습 니 다. 로그 인 에 실 패 했 을 때 로그 인 페이지 로 다시 방향 을 바 꿔 야 합 니 다. 직접 return 하 는 것 은 안 되 지만 상태 코드 와 알림 등 인 자 를 가 져 와 야 하기 때문에 RedirectAttributes 의 addFlashAttribute 를 사용 하려 고 합 니 다. 방식그러나 / toLogin 이 컨트롤 러 에 다시 설정 할 때 addFlashAttribute 를 가 져 올 수 없습니다. 당초 추 가 된 속성.
구체 적 인 사례:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// getFlashAttributes map, ,
Map map=(Map) attr.getFlashAttributes();
System.out.println(map.get(
"status"
));
System.out.println(map.get(
"message"
));
//addFlashAttribute flashAttribute request OutputFlashMap , request
// OutputFlashMap , maps ,
Map maps=RequestContextUtils.getOutputFlashMap(request);
System.out.println(maps.get(
"status"
));
System.out.println(maps.get(
"message"
));
// OutputFlashMap InputFlashMap FlashMapManager
// “input” flash map ,
//flash attribute “output” flash map , ,
// getInputFlashMap, , map2 null
Map map2=(Map)RequestContextUtils.getInputFlashMap(request);
System.out.println(map2.get(
"status"
));
System.out.println(map2.get(
"message"
));
spring 을 보 는 것 을 포함 하여 많은 자 료 를 찾 았 습 니 다. 화면 음악 c 의 공식 문 서 는 이 방향 을 바 꾼 후에 매개 변 수 를 어떻게 얻 는 지 에 대해 명확 한 설명 이 없다. 상기 세 가지 방식 을 포함 하고 내 가 직접 매개 변 수 를 얻 는 방식 도 안 된다. 그래서 RedirectAttributes 를 포기 하고 인삼 을 전달 하 는 것 을 포기 했다. 마지막 으로 session 으로 해결 하고 예전 에 session 을 설정 한 다음 에 값 을 가 져 와 session 을 제거 했다.효 과 는 다 했 는데 마음 이 계속 고민 이 돼 서 댓 글 을 달 아 보 세 요. 여러분 이 RedirectAttributes 의 addFlashAttribute 를 사용 할 수 있 는 지 확인 해 보 세 요. 방식, 그리고 다른 컨트롤 러 에서 이 추 가 된 매개 변수 값 을 가 져 옵 니 다.
모델 앤 드 뷰 나 모델 맵 으로 다 해결 할 수 있 을 것 같 아 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
springmvc application/octet-stream problemmistake: Source code: Solution: Summarize: application/octet-stream is the original binary stream method. If the convers...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.