Привет, у меня есть страница JSF с меню. Я хотел бы показать сообщение в верхней части страницы, чтобы отобразить результат действия из диалогового окна - PullRequest
0 голосов
/ 14 апреля 2019

Я хотел бы показать сообщение (p: message) вверху страницы JSF в результате действия из диалога.Я пытаюсь записать в базу данных через диалоговое окно и хотел бы отобразить сообщение на странице JSF (НЕ в диалоговом окне) сообщение об успешном действии или нет.

Я использую простые лица 6.2.2.

Я пытался использовать FacesContext.getCurrentInstance.addMessage ("null", newFacesMessage ...), но он ничего не отображает на странице JSF

Вот список файлов и краткий обзор каждого файла: Спасибо!

dialog.xhtml: Это основной файл xhtml, в котором я хотел бы показать сообщения вверху.Это содержит меню, как вы можете видеть ниже в теге.Он вызывает menubar.model в menubar.java, показанном ниже

<body>
    <h:form id="formId">
        <p:messages id="messages" showDetail="true" closable="true"
            globalOnly="true">
            <p:autoUpdate />
        </p:messages>
    </h:form>
    <h3>Dialog Sample</h3>
    <h:form>
        <p:menubar model="#{menuBar.model}" style="margin: auto;" />
    </h:form>
</body>

dialogForm.xhtml: это диалоговое окно с вводимым текстом для ввода «имени».Я хотел бы показать сообщение на dialog.xhtml, когда пользователь нажимает кнопку, на которую ссылается p: commandButton, которая вызывает dialogParams.submit

<body>
    <h:form>
        <p:outputLabel value="Dialog Sample" />
        <br />
        <h:panelGrid columns="2">
            <p:outputLabel value="Portfolio Name" />
            <p:inputText value="#{dialogParams.name}" id="portfolioName" />
        </h:panelGrid>
        <br />
        <p:commandButton action="#{dialogParams.submit}" value="Submit" />
    </h:form>
</body>

menuActions.java: Это вызывается из menubar.java, когда пользовательвыбирает «Создать портфолио» из меню.Это показывает диалоговую форму (dialogForm.xhtml)

@Named
@ViewScoped
public class MenuActions implements Serializable {

    public void createPortfolio(ActionEvent ae) {
        Map<String, Object> options = new HashMap<String, Object>();
        options.put("resizable", false);
        options.put("draggable", false);
        options.put("modal", true);
        PrimeFaces.current().dialog().openDynamic("dialogForm", options, null);
        //FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Info", "Successfully completed"));
    }
}

DialogParams.java: Это выполнит действие (я удалил действия базы данных для простоты).Я звоню FacesContext.getCurrentInstace ..., чтобы показать сообщение после закрытия диалога.

@Named
@ViewScoped
public class DialogParams implements Serializable {

    private String name;

    public void submit() {
        PrimeFaces.current().dialog().closeDynamic(null);
        FacesContext.getCurrentInstance().addMessage("formId", new FacesMessage(FacesMessage.SEVERITY_INFO, "Info", this.getName()));
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


}

menubar.java

@Named
@ViewScoped
public class MenuBar implements Serializable {
private MenuModel model;

    @PostConstruct
    protected void init() {
        model = new DefaultMenuModel();


        DefaultSubMenu submenu = new DefaultSubMenu();
        submenu.setLabel("Create");
        submenu.setIcon("pi pi-plus");

        DefaultMenuItem item = new DefaultMenuItem();
        item.setValue("Portfolio");
        item.setCommand("#{menuActions.createPortfolio}");

        //item.setCommand("#{}");
        submenu.addElement(item);
        model.addElement(submenu);

        submenu = new DefaultSubMenu();
        submenu.setLabel("Update");
        submenu.setIcon("pi pi-pencil");
        model.addElement(submenu);

        submenu = new DefaultSubMenu();
        submenu.setLabel("View");
        submenu.setIcon("pi pi-eye");
        model.addElement(submenu);
    }

    public MenuModel getModel() {
        return model;
    }

    public void setModel(MenuModel model) {
        this.model = model;
    }
}
...