JSF:在dataTable或panelGrid中显示动态值

JSF:在dataTable或panelGrid中显示动态值,jsf,datatable,radio-button,survey,tomahawk,Jsf,Datatable,Radio Button,Survey,Tomahawk,我想创建我自己的jsf标签来为我的在线调查项目显示一个表格网格。在第一行,应该有一个标题和一个动态图像计数(smileys)。在第一行之后,应该有问题和相同数量的selectOneRadios类图像。结果应该是一个带有问题列和动态列的表,用于可能的调查答案 我想我需要三个环。第一个循环显示表格标题中的图像,第二个循环列出所有问题,第三个循环列出每个问题的所有可能答案(或selectOneRadio)。我尝试使用h:dataTable,因为这可以循环我的问题,但是其他动态数据呢 注意:由于我们的c

我想创建我自己的jsf标签来为我的在线调查项目显示一个表格网格。在第一行,应该有一个标题和一个动态图像计数(smileys)。在第一行之后,应该有问题和相同数量的selectOneRadios类图像。结果应该是一个带有问题列和动态列的表,用于可能的调查答案

我想我需要三个环。第一个循环显示表格标题中的图像,第二个循环列出所有问题,第三个循环列出每个问题的所有可能答案(或selectOneRadio)。我尝试使用h:dataTable,因为这可以循环我的问题,但是其他动态数据呢

注意:由于我们的cms,我必须只使用JSF1.2组件

谢谢你的帮助

yves beutler

如果我猜对了,你想要这样的东西:

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;
    }
  }
在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>

在控制器中,您将返回问题列表:

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 List getQuestions(){
列出问题=新建ArrayList();
添加(新问题(“你觉得这个怎么样?”);
添加(新问题(“你觉得怎么样?”);
回答问题;
}
你的问题课可能是这样的:

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;
    }
  }
公开课问题{
私人最终字符串标题;
公开问题(字符串标题){
this.title=标题;
}
公共字符串getTitle(){
返回标题;
}
公共列表getOptions(){
列表项=新建ArrayList();
添加(新选择项(“1”、“非常”);
添加(新选择项(“2”,“确定”));
添加(新选择项(“3”,“不太好”));
添加(新选择项(“4”,“坏”));
退货项目;
}
}

谢谢您的回答。我将尝试编写您的代码片段并将其发布在这里。顺便说一句,我必须使用Facelets,但我认为这并不重要。现在我编程了它,这完全是我想要的方式。谢谢蒂姆的回答。好好休息一天