我正在构建一个表单,允许用户输入数据库连接参数。键入参数后
用户可以测试(btnTester)是否可以使用其参数建立连接。

在所有情况下,都会为用户生成一条消息。这是从支持Bean代码失败的连接尝试的示例:

(...)
addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Connection failed.", t.getLocalizedMessage()));
(...)

这是表格代码。我希望该消息出现在p:message中。不幸的是,什么都没有发生。::按钮后没有消息(连接成功与否)显示
即使将global属性设置为false或true,也是如此。
<h:form prependId="false">
(...)
  <h:panelGrid>
    <!-- Other form components here -->
    <f:facet name="footer">
      <p:commandButton
          id="btnTester"
          value="Tester"
          actionListener="#{assistantCreationSourcesBean.testerConnexionBase}"
          update="msgTester" />
          <p:message id="msgTester" for="btnTester" />
    </f:facet>
 </h:panelGrid>
</h:form>

我想念什么?

最佳答案

我认为您的问题在这里:

addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Connection failed.", t.getLocalizedMessage()));

我假设您正在调用FacesContext.addMessage()。第一个参数是组件ID字符串。如果将其设置为null,则将消息强制为全局消息。您已定义的<p:message>组件设置为for="btnTester",因此它将仅显示具有与btnTester组件的ID匹配的组件ID的消息。

除了addMessage()的Javadoc之外:



Link to FacesMessage Javadoc for addMessage() method

10-02 11:26