когда инициализируется бин? Я использовал аннотацию управляемого компонента @RequestScoped. У меня есть страница - products.x html, и я перенаправляю на одну и ту же страницу в зависимости от версии, которую нажимает.
Например, пользователь нажимает 2019.000, он перенаправляет на ту же страницу ~ /products.xhtml?faces-redirect=true&ver=2019.000
Моя проблема в том, что у меня есть диалоговое окно, которое открывается, когда пользователь нажимает на ap: commandLink. Компонент, необходимый для заполнения содержимого диалога, - DownloadView. java :: get Root (). Вот фрагмент моего DownloadView. java.
@ManagedBean(name = "DownloadView")
@ViewScoped
public class DownloadView implements Serializable {
private TreeNode root;
private String path;
public TreeNode getRoot() {
DownloadBI downloadBI = new DownloadBI(modifyPath(this.path));
this.root = downloadBI.getFilesTreeNode();
if (root.getChildCount() != 0)
this.root.getChildren().get(0).setExpanded(true);
return this.root;
}
. . .
Выбор по умолчанию при загрузке страницы - 2020.000. Диалог отлично работает с правильными целевыми ссылками при загрузке из выбора по умолчанию 2020.000. Но когда я перенаправляю на 2019.000 и пытаюсь открыть диалог, кажется, что бин сохранил данные с 2020.000. Вот фрагмент моего p: commmandLink, вызывающего диалог из products.x html.
<p:commandLink value="#{startup.name}" title="#{startup.name}"
process="@form" update=":download-form:downloadPanel"
oncomplete="PF('downloadDialog').show()" >
<f:setPropertyActionListener target="#{DownloadView.path}" value="#{startup.url}"/>
</p:commandLink>
Я предполагал, что значение startup.url должно меняться каждый раз при щелчке командной ссылки. Это так, но это же значение от 2020.000. При тестировании его поведения я заметил, что идентификатор формы совпадает с 2020.000 и 2019.000.
Из chrome источник:
j_idt161:0:j_idt163:1:download-view
то же самое при выборе из 2019.000. Они должны быть разными, поскольку у них разные URL.
Я думал, что это проблема с областью видимости, но я перепробовал все области. Но это все еще не работает. Я думаю, что я должен создать свой бин DownloadView. java только тогда, когда нажата команда linkLink, и когда диалог закрыт, он также должен быть уничтожен. Но я не уверен, как это сделать. : (
Я отлаживал это уже несколько дней, и я застрял. Я надеюсь, что кто-то может дать некоторые идеи, как решить эту проблему. Кстати, я новичок в JSF / Primefaces. Пожалуйста, помогите!