如果存在多个表单,如何分配 "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>
这是自相矛盾的...您永远不会将全局错误分配给特定组件( 形式是 组件)。
只需使用
将错误分配给表单的id
Messages.addError(id, error);
添加一个<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>
我在同一个页面上有登录和注册表格,我尝试 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>
这是自相矛盾的...您永远不会将全局错误分配给特定组件( 形式是 组件)。
只需使用
将错误分配给表单的id
Messages.addError(id, error);
添加一个
<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>