I want to pass selectedExamId from chooseexam page to exam page, what is the good way to do that? is it a good practice to use two baking bean for single jsf page?
One more thing is I am getting same Question list each time?
I have following jsf page
chooseExam.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en"
      xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core">
<h:head>
</h:head>
<h:body>
    <ui:composition template="/templates/admin/template.xhtml">
        <ui:define name="content">
            <h:selectOneRadio value="#{examBean.selectedExamId}">
                <f:selectItems value="#{chooseExamBean.exams}" var="exam" itemValue="#{exam.examId}" itemLabel="#{exam.examName}"/>
            </h:selectOneRadio>
            <h:commandButton value="Submit" action="/user/exam?faces-redirect=true"/>
        </ui:define>
    </ui:composition>
</h:body>
</html>
and
exam.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en"
      xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core">
<h:head>
</h:head>
<h:body>
    <ui:composition template="/templates/admin/template.xhtml">
        <ui:define name="content">
            <ui:repeat value="#{examBean.questions}" var="question">
                <h:outputLabel value="#{question.question}"/>
                <h:selectOneRadio value="#{examBean.questionAnswerMap[question]}">
                    <f:selectItem itemValue="#{question.choice1}" itemLabel="#{question.choice1}"/>
                    <f:selectItem itemValue="#{question.choice2}" itemLabel="#{question.choice2}"/>
                    <f:selectItem itemValue="#{question.choice3}" itemLabel="#{question.choice3}"/>
                    <f:selectItem itemValue="#{question.choice4}" itemLabel="#{question.choice4}"/>
                </h:selectOneRadio>
            </ui:repeat>
            <h:commandButton value="Submit" action="#{examBean.calculate}"/>
        </ui:define>
    </ui:composition>
</h:body>
</html>
following are the backing beans
ChooseExamBean.java
@Component
@ManagedBean
public class ChooseExamBean {
    List<Exam> exams;
    @Autowired
    private ExamService examService;
    @PostConstruct
    public void init(){
        exams = examService.getAllExams();
    }
    public List<Exam> getExams() {
        return exams;
    }
    public void setExams(List<Exam> exams) {
        this.exams = exams;
    }
}
and
ExamBean.java
@Component
@ManagedBean
public class ExamBean {
    private List<Question> questions;
    private Map<Question, String> questionAnswerMap = new HashMap<>();
    private int score;
    private Long selectedExamId;
    @Autowired
    private QuestionService questionService;
    @PostConstruct
    public void init() {
        if(selectedExamId != null)
            questions = questionService.getQuestionsForExam(selectedExamId);
    }
    public Map<Question, String> getQuestionAnswerMap() {
        return questionAnswerMap;
    }
    public void setQuestionAnswerMap(Map<Question, String> questionAnswerMap) {
        this.questionAnswerMap = questionAnswerMap;
    }
    public List<Question> getQuestions() {
        if(questions == null)
            questions = questionService.getQuestionsForExam(selectedExamId);
        return questions;
    }
    public void setQuestions(List<Question> questions) {
        this.questions = questions;
    }
    public int getScore() {
        return score;
    }
    public void setScore(int score) {
        this.score = score;
    }
    public Long getSelectedExamId() {
        return selectedExamId;
    }
    public void setSelectedExamId(Long selectedExamId) {
        this.selectedExamId = selectedExamId;
    }
    public String calculate() {
        score = questionAnswerMap.size();
        return "result?faces-redirect=true";
    }
}