【发布时间】:2011-11-17 16:31:44
【问题描述】:
我的验证器需要知道它是完整请求还是 ajax 请求。在我当前的解决方案中,我检查了 X-Requested-With 元素的 http 请求标头:
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
}
...
}
有没有更好的方法来实现这一点?对于不同的浏览器/javascript 库,我的解决方案是否“安全”?
更新:
刚刚发现 X-Requested-With 标头仅在 ajax 请求来自 Primefaces 组件库(<p:ajax>tag)时才存在。
如果我使用纯 JSF <f:ajax>,它不存在。 所以我的方法不适用于 <f:ajax>。
使用<f:ajax> 有不同的标头:
Faces-Request:partial/ajax
Osw 提出的解决方案适用于<f:ajax> 和 <p:ajax>:
【问题讨论】:
标签: java ajax jsf jsf-2 http-headers