jsf数据表内的数据表渲染问题

时间:2011-07-05 16:01:23

标签: jsf datatable rendering icefaces

我正在使用JSF和IceFaces组件库创建一个在线调查应用程序。调查可以有任何问题。每个问题可以是具有多个选项的任何一种类型复选框,单选按钮等。

为此,我使用数据表动态地向调查添加问题。在该数据表中,我使用另一个数据表来为调查添加选项。

现在问题是,如果我继续单击“添加问题”按钮,则在外部数据表中添加问题时没有任何问题。一旦我点击内部数据表为任何添加的问题添加选项,我就可以添加。但在那之后,如果我再次点击添加问题按钮,它就无法正常工作。

这是我的xhtml代码:

<ice:dataTable id="icePnlQuestionAdd" var="questAdd" value="#{createSurveyManagedBean.surveyQuestionList}">
  <ice:column>
    <table border="0" cellspacing="0" cellpadding="0">
      <tr>
        <th><ice:outputText value="Question English" style="white-space: nowrap;" /></th>                               
        <td colspan="15">                        
          <ice:inputText  id="QuestionEn" style="width:485px;" value="#{questAdd.questionEn}" />
        </td>
      </tr>
      <tr>
        <ice:dataTable  id="icePnlOptionAdd" var="optionAdd" value="#{questAdd.surveyQuestionOptionList}">                                           <ice:column>
            <th><ice:outputText value="Option " /></th>
            <td><ice:inputText id="OptionEn" value="#{optionAdd.optionEn}" /></td>
          </ice:column>
        </ice:dataTable>
      </tr>
    </table>
  </ice:column>
</ice:dataTable>

这是添加问题方法:

public String addQuestion() {
    SurveyDTO addSurveyQuestionDTO = new SurveyDTO();       
    questionNum = surveyQuestionList.size();        
    addSurveyQuestionDTO.setQuestionNum(questionNum); 
    surveyQuestionList.add(addSurveyQuestionDTO);
    return "createSurvey";
}

这是添加选项方法:

public String addOption() {
    FacesContext context = FacesContext.getCurrentInstance();       
    if (context.getExternalContext().getRequestParameterMap().get("questionNum") != null) {
        String questionNum = (String) context.getExternalContext().getRequestParameterMap().get("questionNum");
        int selectedQuestionNum = Integer.valueOf(questionNum);             
        SurveyQuestionOptionDTO  surveyQuestionOptionDTO = new SurveyQuestionOptionDTO();
        surveyQuestionList.get(selectedQuestionNum).getSurveyQuestionOptionList().add(surveyQuestionOptionDTO);
    }
    return "createSurvey";
}

0 个答案:

没有答案