유효성 검사기는 전체 요청인지 또는 ajax 요청인지 알아야합니다. 내 현재 솔루션에서 나는 X-Requested-With
요소에 대한 HTTP 요청 헤더를 확인이를 달성하기 위해 더 나은 방법은JSF 사용자 정의 유효성 검사기에서 전체 요청으로부터 ajax 요청을 구별하십시오.
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
HttpServletRequest req = (HttpServletRequest) context.getExternalContext().getRequest();
if (req.getHeader("X-Requested-With") != null) {
// do something
} else {
// do something else
}
...
}
있습니까? 내 솔루션은 다른 브라우저/자바 스크립트 라이브러리와 관련하여 "안전"합니까?
UPDATE :
그냥 아약스 요청이 Primefaces 구성 요소 라이브러리합니다 (<p:ajax>
태그)에서 오는 경우 X가-요청-으로 헤더에만 존재한다는 것을 발견했다.
일반 JSF를 사용하는 경우이 아닌 이 존재합니다. <f:ajax>
입니다. 내 접근 방식은<f:ajax>
과 작동하지 않습니다. <f:ajax>
를 사용
다른 헤더가 :
Faces-Request:partial/ajax
OSW에 의해 제안 된이 솔루션은 <f:ajax>
및<p:ajax>
작동 :
PartialViewContext#isAjaxRequest()
답변 해 주셔서 감사합니다. 좋은 소리. 이 방법이 무엇인지 아십니까? 어쩌면 헤더 만 검사 할 수도 있습니다. –
@Matt, 죄송합니다. 정확하게 무엇을하는지 모르지만 옵션은 헤더를 확인하거나 요청 매개 변수 맵을 확인 중입니다. – Osw
내 질문이 업데이트되었습니다. 내 솔루션이 안전하지 않은 것 같습니다. –