Форма опроса на jmix java

Коллеги, доброго времени суток!
В jmix Я новичок и есть вопрос.
Работаю с jmix java.

Есть конкретная задача - сделать программу с опросами. Сделал 4 entity - User (стандартный), Poll, Question, Answer. Соответственно - в Poll - названия опросов с возможностью добавления вопросов из Question и ответов из Answer. Связал их все Композицией.
Вопрос - как сделать саму страничку с формой опросов и возможностью голосования?
Пока есть возможность только создавать, в сети информацию не нашел.
Надеюсь на вашу помощь.

Добрый день,

Я немного упросил задачу, поскольку, как понял, главный ваш вопрос – создать станицу с голосовалкой. Я предположил, что это 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());
    }
}

Надеюсь, поможет

1 симпатия