请参阅this question (and answer)了解详细信息。这是一个基本的(请运行此示例,如果可以的话。您可以简单地单击标签并启动(无效!)文件上传):
我有一个<h:outputLabel>
来调用一个不可见的<p:fileUpload>
。它工作正常。现在,上面显示的错误信息(感谢BalusC提供的答案)。
<h:form>
<b:commandButton id="c" value="Invoke me" ajax="true"
update="bootsfaces_message" action="#{bean.message}" />
<p:fileUpload id="file-input" widgetVar="file-input" update="@form"
auto="true" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" sizeLimit="10"
invalidSizeMessage="invalid size message"
fileUploadListener="#{bean.image}"
invalidFileMessage="invalid format" styleClass=" ui-helper-hidden" />
<h:outputLabel for="file-input_input"
onclick="PF('file-input').messageContainer.appendTo($('#bm'));">
LABEL
</h:outputLabel>
<h:outputText value="#{bean.file.fileName}" />
<br />
<h:outputText value="#{bean.file.size}" />
</h:form>
所以现在,会显示错误消息,但主题为<p:message
&gt;。但是消息应该总是看起来像来自BootsFaces的消息。您可以点击按钮Invoke me
进行比较。只需将以下代码添加到Manageed Bean
:
public void message() {
FacesContext.getCurrentInstance().addMessage(
"",
new FacesMessage(FacesMessage.SEVERITY_ERROR, null,
"test message"));
}
正如答案中所指出的,JavaScript是一种操纵DOM树的可能解决方案。嗯,这不是我想要的(只是最糟糕的解决方案)。
BootsFaces是否有针对这类问题的特定解决方案?