如果存在多个表单,如何分配 "addGlobalError()" 以更正表单

How to assign "addGlobalError()" to correct form if several forms exists

我在同一个页面上有登录和注册表格,我尝试 return 仅在相关表格上显示全局错误消息。我该如何正确地做到这一点?

import org.omnifaces.util.Messages;

// login class submit()
Messages.addGlobalError('Login failed');

// register class submit()
Messages.addGlobalError('Register failed');
<h:form id="login-form">    
    <h:messages globalOnly="true" />    
    // [...]                            
    <h:commandButton value="Login" action="#{login.submit()}" />    
</h:form>    
<h:form id="register-form">    
    <h:messages globalOnly="true" />    
    // [...]                            
    <h:commandButton value="Sign up" action="#{register.submit()}" />    
</h:form>

这是自相矛盾的...您永远不会将全局错误分配给特定组件( 形式是 组件)。

  1. 只需使用

    将错误分配给表单的id
    Messages.addError(id, error);
    
  2. 添加一个<h:message for="...">,其中for包含表单的id


您的示例应如下所示:

import org.omnifaces.util.Messages;

// login class submit()
Messages.addError('login-form', 'Login failed');

// register class submit()
Messages.addError('register-form', 'Register failed');
<h:form id="login-form">    
    <h:messages globalOnly="true" for="login-from" />    
    // [...]                            
    <h:commandButton value="Login" action="#{login.submit()}"/>    
</h:form>    
<h:form id="register-form">    
    <h:messages globalOnly="true" for="register-from" />    
    // [...]                            
    <h:commandButton value="Sign up" action="#{register.submit()}"/>    
</h:form>