Добрый день,
Я немного упросил задачу, поскольку, как понял, главный ваш вопрос – создать станицу с голосовалкой. Я предположил, что это RadioButton, платформа 2.1.0
У меня есть сущности Question (вопросы) и Answer (ответы) с стандартными Views для ввода значений.
Форму голосовали я седлал на основе BlankView c ручной обработкой вопросов и ответов и выводу в Span и RadioButtonGroup. Код View я тоже упростил – у меня берется только первый из вопросов. Итератор можно сделать по аналогии с ответами (напишите, если нужен пример).
Проект на GitHub JMix20_Survey
Код View голосовалки:
public class VoiteView extends StandardView {
@Autowired
private DataManager dataManager;
@ViewComponent
private VerticalLayout vboxLayout;
@ViewComponent
private Span spanQuestion;
@ViewComponent
private Span spanResult;
@ViewComponent
private RadioButtonGroup<String> ratioAnswers;
@Subscribe(id = "buttonStart", subject = "clickListener")
public void onButtonStartClick(final ClickEvent<JmixButton> event) {
List<Question> questions = dataManager.load(Question.class).all().list();
if(!questions.isEmpty()) {
Question current_question = questions.get(0);
vboxLayout.setVisible(true);
spanQuestion.setText(current_question.getQuestionName());
ratioAnswers.addThemeVariants(RadioGroupVariant.LUMO_VERTICAL);
ratioAnswers.setLabel("Answers");
List<Answer> current_answers = current_question.getVarAnswers();
if(!current_answers.isEmpty()) {
List<String> outputList = new ArrayList<>(current_answers.size());
for(Answer obj : current_answers){
outputList.add(obj.getAnswerName());
}
ratioAnswers.setItems(outputList);
}
}
}
@Subscribe("ratioAnswers")
public void onRatioAnswersComponentValueChange(final AbstractField.ComponentValueChangeEvent<JmixRadioButtonGroup, Object> event) {
spanResult.setText("Currently selected: " + ratioAnswers.getValue());
}
}
Надеюсь, поможет