Я хотел бы показать сообщение (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;
}
}