You can pass get requests, but you lose the current state of the
application.
I have a setup that uses a URL like /product/product.jsf?prodid=1234
product.xhtml (partial)
...snip...
<c:set var="bean" value="#{productPageBean}"/>
<c:set var="entity" value="#{bean['product']}"/>
<h:outputText value="#{productPageBean['redirect']}" escape="false"
rendered="#{not productPageBean.found}" />
...snip...
<span class="hugeBoldText">#{entity['title']}</span>
...snip...
ProductPageBean.java (partial)
protected void init() {
this.productid = FacesUtils.getRequestParameter("prodid");
this.product = dao.getProduct(this.productid);
}
FacesUtils.java (partial)
public static String getRequestParameter(String name) {
return
(String)FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(name);
}