У меня возникли проблемы с передачей параметра в диалоговое окно, которое я действительно могу использовать.
У меня есть командная кнопка, для которой задано значение 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
.
Я делаю что-то не так или я должен делать это по-другому? (Я видел ссылку на передачу объектов через карту сеанса, но есть ли способ заставить это работать так?)
<f:viewAction action="#{testBean.init}" />
на страницу диалога и удалить аннотацию@PostConstruct
из инициализации. - person Jameson_uk   schedule 01.07.2021