我在我的应用程序中使用JSF和Hibernate。假设我有一个用户帐户,我想在<ui:repeat>
无序列表中使用<ul>
显示问题。如果没有问题,我不想呈现列表,而是显示“无问题”文本。我目前的帐户方式如下:
<ul>
<ui:repeat value="#{user.questions}" var="question">
<li>#{question.text}</li>
</ui:repeat>
</ul>
<h:outputText rendered=#{user.questions.size() == 0}">no questions</h:outputText>
如果没有问题,这有两个问题,即迷路<ul>
标签。
我是否应该再次使用rendered=#{user.questions.size() > 0}
将其封装在另一个面板中,因为ui:repeat
似乎不接受渲染属性。
第二个问题是user.questions.size()
计算两次(并且在两个不同的地方访问user.questions
),这是否意味着db中同一个变量的两次点击?
答案 0 :(得分:1)
我是否应该再次使用
rendered=#{user.questions.size() > 0}
将其封装在另一个面板中,因为ui:repeat
似乎不接受渲染属性。
是
第二个问题是
user.questions.size()
计算两次(并且在两个不同的地方访问user.questions
),这是否意味着db中同一个变量的两次点击?
应通过适当地确定范围和缓存数据来在模型中处理此类行为。
@ManagedBean @RequestScoped
public class DemoBean {
private List<Question> questions;
public List<Question> getQuestions() {
if(questions == null) {
questions = lookupQuestions();
}
return questions;
}
// etc.