Структура и параметры диалога Primefaces

У меня возникли проблемы с передачей параметра в диалоговое окно, которое я действительно могу использовать.

У меня есть командная кнопка, для которой задано значение actionListener, которое вызывает метод открытого диалога в компоненте поддержки.

Map<String, Object> options = new HashMap<>();
options.put("modal", true);
//...
options.put("includeViewParams", true);

Map<String, List<String>> params = new HashMap<>();
List<String> values = new ArrayList<>();
values.add("My String");
params.put("myParam", values);

PrimeFaces.current().dialog().openDynamic("test", options, params);

затем на моей тестовой странице я дал

<f:metadata>
  <f:viewParam name="myParam" value="#{testBean.testVal}" />
</f:metadata>
...
<h:outputText value="#{testBean.testVal}" />

и строка выводится нормально.

Но я хочу использовать это значение для поиска в базе данных, и это просто не работает.

private String myParam;
private List<Object> myThings;

@PostConstruct
public void init() {
  myThings = service.lookup(myParam);
}

но в вызове PostConstruct myParam имеет значение null.

Я добавил запись в init, геттер и сеттер и заметил, что у меня

  • init --› myParam null
  • Геттер --› myParam null
  • Setter --› myParam = переданное значение
  • Getter --› myParam = переданное значение
  • Getter --› myParam = переданное значение

Таким образом, кажется, что значение передается, но после срабатывания метода PostConstuct.

Я делаю что-то не так или я должен делать это по-другому? (Я видел ссылку на передачу объектов через карту сеанса, но есть ли способ заставить это работать так?)


person Jameson_uk    schedule 30.06.2021    source источник
comment
Не по теме; см. stackoverflow.com/questions/ 16352816/   -  person Jasper de Vries    schedule 30.06.2021
comment
Java — это то, к чему я обычно не притрагиваюсь целую вечность, а потом должен вернуться к этому снова. Приведение в порядок кода обычно происходит позже... Обновлено и постараюсь запомнить, что могу сделать это сейчас.   -  person Jameson_uk    schedule 30.06.2021
comment
Да, и, в частности, связанный stackoverflow.com/questions/4888942 /   -  person Jameson_uk    schedule 01.07.2021
comment
Решение состояло в том, чтобы добавить <f:viewAction action="#{testBean.init}" /> на страницу диалога и удалить аннотацию @PostConstruct из инициализации.   -  person Jameson_uk    schedule 01.07.2021