Я создаю приложение для онлайн-опросов с использованием 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";
}