Инициализация бина JSF (Primefaces) - PullRequest
0 голосов
/ 06 февраля 2020

когда инициализируется бин? Я использовал аннотацию управляемого компонента @RequestScoped. У меня есть страница - products.x html, и я перенаправляю на одну и ту же страницу в зависимости от версии, которую нажимает. enter image description here

Например, пользователь нажимает 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 источник:

enter image description here

j_idt161:0:j_idt163:1:download-view

то же самое при выборе из 2019.000. Они должны быть разными, поскольку у них разные URL.

Я думал, что это проблема с областью видимости, но я перепробовал все области. Но это все еще не работает. Я думаю, что я должен создать свой бин DownloadView. java только тогда, когда нажата команда linkLink, и когда диалог закрыт, он также должен быть уничтожен. Но я не уверен, как это сделать. : (

Я отлаживал это уже несколько дней, и я застрял. Я надеюсь, что кто-то может дать некоторые идеи, как решить эту проблему. Кстати, я новичок в JSF / Primefaces. Пожалуйста, помогите!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...