با استفاده از jsf اینکار خیلی راحت نیست و از AJAX هم نمی توانید استفاده کنید ترجیحا برای سهولت کار از primefaces استفاده کنید . در جی اس اف باید از property bean استفاده کنید و نباید متد را صدا بزنید یعنی getList() به list باید تغییر کند و برای آن getter بگذارید
	ولی در jsf
<h:dataTable value="#{categoryDAOImpl.categoryList}" var="o">
             
                <h:column>
                    <f:facet name="header">دسته</f:facet>
                  <a href="#{request.contextPath}/categoryList.jsf?categoryId=#{o.id}">  #{o.name}</a>
                </h:column>
                    </h:dataTable>
 
        <h:dataTable value="#{foodDAOImpl.productListByCategory}" var="c">
                 
 
                <h:column>
                    <f:facet name="header">محصول هر دسته</f:facet>
                    #{c.name}
                </h:column>
                 
             
            </h:dataTable>
public class FoodDAOImpl
{
private List<Category> categoryList;
private List<Product> productListByCategory;
public List<Product> getProductListByCategory()
{
  if(productListByCategory == null)
{
   getCurrentInstance().getExternalContext().getRequestParameterMap().get("categoryId");
   productListByCategory = //query your product base on category query param
}
return productListByCategory;
}
}