2012-03-19 3 views
0

Я хочу создать свой собственный тег jsf , чтобы отобразить сетку таблицы для моего проекта об онлайн-опросах. В первой строке должно быть название и динамическое количество изображений (смайлы). После первого ряда должны быть вопросы и одинаковое количество selectOneRadios, как изображения. Результатом должна быть таблица с колонкой вопросов и динамическими столбцами для возможных ответов на опрос.JSF: отображение динамических значений в dataTable или panelGrid

Думаю, мне нужны три петли. Первый, чтобы отобразить изображения в заголовке таблицы, второй для отображения всех вопросов и третьего цикла для отображения всех возможных ответов (или selectOneRadio) на каждый вопрос. Я попытался использовать h: dataTable, потому что это могло бы охватывать мои вопросы, но как насчет других динамических данных?

примечание: из-за наших cms необходимо, чтобы я использовал только компоненты jsf 1.2.

спасибо за вашу помощь
Yves Бойтлера

ответ

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> 

В контроллере вы вернет список вопросов:

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; 
    } 
    } 
+1

Спасибо за ваш ответ. Я попытаюсь запрограммировать фрагмент кода и разместить его здесь. Кстати, я должен использовать Facelets, но я думаю, что это не имеет значения. –

+1

Теперь я запрограммировал это, и это полностью так, как я хотел. Спасибо Тиму за отличный ответ. Желаем вам приятного отдыха –

+0

Добро пожаловать. –

Смежные вопросы