条纹错误未出现在表单中的文本字段中

Stripes error not appearing on text field in form

我有一个要验证的 phone 数字组件,但出于某种原因,我无法让条纹验证错误显示在 phone 数字字段上形式。如果我在表单 外部 显示标签,则会显示错误,但它们不会附加到字段。

<e:declare-component name="PhoneNumberForm" css="true" js="true">
  <stripes:errors /> <%-- This tag displays errors --%>
    <e:sslform id="submit-phone-number-form" action="${componentContext.action}">
      <div class="phone-wrapper">
        <stripes:text name="phoneNumber" id="phoneNumber" class="TextInput" />
        <stripes:errors field="phoneNumber" /> <%-- This tag DOES NOT display errors --%>
      </div>
      ...
    </e:sslform>
</e:declare-component>

表单提交给扩展 ActionBean 并实现 ValidationErrorHandler 的 java class。我看到正在调用验证方法,并且 ValidationErrors 不为空(它包含 phone 数字验证错误。)

需要注意的事项:当我将表单更改为提交到 beanclass 而不是操作时,错误字段显示正确;但是,这不是我的解决方案,因为该组件在代码库的其他地方使用。 beanclass 和 action 有什么区别?

关于为什么的任何想法?谢谢!

stripes:error 标签嵌套在 stripes:form 标签内时,显示的错误将仅是发布表单时产生的错误。相反,可以说,因为没有包含 stripes:form,所以不清楚 phone 数字验证错误的结果是什么操作。

您可以尝试为 stripes:errors 标签提供 action 属性:

<stripes:errors field="phoneNumber" action="${componentContext.action}"/>

只是为了告诉 Stripes 错误消息必须来自哪个表单操作。

我自己从未尝试过,但值得一试。