以下是PrimeFaces showcase中关于<p:growl>
标记的示例代码。在本例中,当您单击"保存"按钮时,会出现两条消息:"Successful"one_answers"SecondMessage"。
这个链接就是我所说的。
这是PrimeFaces Showcase 的示例代码
<h:form>
<p:growl id="growl" showDetail="true" sticky="true" />
<p:panel header="Growl">
<h:panelGrid columns="2" cellpadding="5">
<p:outputLabel for="msg" value="Message:" />
<p:inputText id="msg"
value="#{growlView.message}"
required="true" />
</h:panelGrid>
<p:commandButton value="Save"
actionListener="#{growlView.saveMessage}"
update="growl" />
</p:panel>
</h:form>
以及PrimeFaces Showcase中的一个bean GrowlView.java
。
@ManagedBean
public class GrowlView {
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public void saveMessage() {
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage("Successful", "Your message: " + message) );
context.addMessage(null, new FacesMessage("Second Message", "Additional Message Detail"));
}
}
我的问题是,如何使"成功"消息的粘性=true,SecondMessage的粘性=false?
我试着用两个<p:growl>
标签来改变第二次咆哮的位置和粘性。但如果关闭第一次咆哮,第二次咆哮的位置不会像PrimeFaces Showcase示例那样改变。
这是修改后的示例代码:
<h:form id="growlForm">
<p:growl id="growl1" showDetail="true" sticky="true" />
<p:growl id="growl2" showDetail="true" sticky="false" />
<p:panel header="Growl">
<h:panelGrid columns="2" cellpadding="5">
<p:outputLabel for="msg" value="Message:" />
<p:inputText id="msg" value="#{growlView.message}"
required="true" />
</h:panelGrid>
<p:commandButton value="Save"
actionListener="#{growlView.saveMessage}" update="growl1 growl2" />
</p:panel>
</h:form>
以及保存方法:
public void saveMessage() {
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage("growlForm:growl1", new FacesMessage("Successful", "Your message: " + message) );
context.addMessage("growlForm:growl1", new FacesMessage("Second Message", "Additional Message Detail"));
context.addMessage("growlForm:growl2", new FacesMessage("Successful 2", "Your message: " + message) );
context.addMessage("growlForm:growl2", new FacesMessage("Second Message 2", "Additional Message Detail"));
}
我发现这个案子有些奇怪。在开始时,两个咆哮都在saveMethod
中添加了四条消息。过了一段时间(6秒,life
属性的默认值),来自growl1
的所有消息都按预期显示。
我不知道为什么两次咆哮最后都是4条信息。我搜索了现有的咆哮问题,发现了一个与多次增长有关的问题。
看看生成的html。你有同样的东西吗?