Видя, как связаны значения компонентов, могу поспорить, что они внутри таблицы данных. Если это действительно так, вы можете использовать DataModel#getRowData()
для получения текущей строки. Добавьте свойство DataModel
к компоненту TestService
следующим образом:
private List<Question> questions;
private DataModel<Question> questionModel;
@PostConstruct
public void init() {
questions = getItSomehow();
questionModel = new ListDataModel<Question>(questions);
}
public void change(ValueChangeEvent event) {
Question currentQuestion = questionModel.getRowData();
// ...
}
и измените вид следующим образом:
<h:dataTable value="#{TestService.questionModel}" var="test">
При этом я бы предложил использовать более разумные имена переменных, чем TestService
, test
и change()
, например Questionaire
, question
и changeAnswer()
соответственно. Это делает код более самодокументированным.