2

我正在用 custom 扩展 jsf 2,但PartialViewContext我不明白这两种方法isAjaxRequest和 `isPartialRequest.

public abstract boolean isAjaxRequest();

如果请求标头 Faces-Request 存在且值为 partial/ajax,则返回 true。否则,返回假。

public abstract boolean isPartialRequest();

返回 true isAjaxRequest 返回 true 或者如果请求标头 Faces-Request 存在且值为 partial/process。否则,返回假。

我无法弄清楚这意味着什么。

4

1 回答 1

1

在代码中,区别在于:

public boolean isAjaxRequest() {
    return "partial/ajax".equals(request.getHeader("faces-request"));
}

public boolean isPartialRequest() {
    return isAjaxRequest() || "partial/process".equals(request.getHeader("faces-request"));
}

完全按照 Javadoc 的描述。

您的下一个(或实际?)问题可能是“它们何时返回 true 以及何时使用?” . 嗯,isPartialRequest()实际上是对isAjaxRequest(). 也就是说,将来很可能会发明一些不同类型的 HTTP 请求,这需要 JSF 返回部分响应。除其他外,PartialResponseWriter它依赖于此。这样,当引入这种新型 HTTP 请求时,JSF 人员就不需要更改该 API。


与具体问题无关,很少需要自己显式地覆盖它们。您可以保持标准实现不变。你知道PartialViewContextWrapper吗?如果您从它扩展,那么您不需要自己实现这些方法。

于 2013-07-02T11:59:45.377 回答