我想创建自己的jsf标签以显示我的项目关于在线调查的表格。在第一行中,应该有一个标题和动态的图像数量(表情符号)。在第一行之后,应该有类似图像的selectOneRadios的问题和相同的计数。结果应该是一个包含问题列的表格和可能的调查答案的动态列。
我想我需要三个循环。第一个显示表头中的图像,第二个列出所有问题,第三个循环列出每个问题的所有可能答案(或selectOneRadio)。我尝试使用 h:dataTable,因为这可以循环我的问题,但其他动态数据是什么?
注意:由于我们的cms,我必须只使用jsf 1.2组件。
感谢您的帮助
yves beutler
答案 0 :(得分:1)
如果我找对你,你想要这样的东西:
在JSP中:
<h:dataTable value="#{myBean.questions}"
var="question">
<h:column>
<f:facet name="header" >
<h:outputText value="Question"/>
</f:facet>
<h:outputText value="#{question.title}"/>
</h:column>
<h:column>
<f:facet name="header" >
<!-- smilies go here -->
</f:facet>
<h:selectOneRadio>
<f:selectItems value="#{question.options}"/>
</h:selectOneRadio>
</h:column>
</h:dataTable>
在Controller中,您将返回一个问题列表:
public List<Question> getQuestions(){
List<Question> questions = new ArrayList<Question>();
questions.add(new Question("How did you like this?"));
questions.add(new Question("How did you like that?"));
return questions;
}
你的问题类看起来像这样:
public class Question{
private final String title;
public Question(String title){
this.title = title;
}
public String getTitle(){
return title;
}
public List<SelectItem> getOptions(){
List<SelectItem> items = new ArrayList<SelectItem>();
items.add(new SelectItem("1", "Very much"));
items.add(new SelectItem("2", "okay"));
items.add(new SelectItem("3", "not that good"));
items.add(new SelectItem("4", "bad"));
return items;
}
}