JSF c:设置评估

DD.*_*DD. 2 jsf jstl jsf-2

<c:set var="product" value="#{productDAO.findByCode('code')}"  />
#{product.name}
#{product.name}
Run Code Online (Sandbox Code Playgroud)

我想从DB中检索一个对象并将其存储到变量中一次.但是,我发现每次访问产品时都会调用DB.在上面的示例中,有两个对DB的调用.

Bal*_*usC 6

您需要明确指定范围.

<c:set var="product" value="#{productDAO.findByCode('code')}" scope="request" />
Run Code Online (Sandbox Code Playgroud)

但是,正确的方法是创建和使用请求范围的托管bean并将此逻辑放入其中@PostConstruct.

  • @Ravi:然后每次请求评估一次.请注意,无范围的一个表示"无"范围,然后"<c:set>"仅表示为"别名".每次引用变量时,仍然会评估基础EL表达式.运行调试器以自己查看. (2认同)