JSF 有条件地连续呈现错误

JSF Conditionally render errors in a row

我想在 table 的单独一行中呈现错误。但是,当我使用 ui:repeat 时绑定不起作用,因为它将所有行设置为相同的值。

         <ui:repeat id="quest" value="#{questions}" var="question">
            <tr>

               <td class="col-md-2">
                     <p:selectOneRadio id="questionId" value="#{question.response}" binding="#{questionBinding}" validator="#{question.validate}" required="true" requiredMessage="You must answer the question to continue">
                        <f:selectItem itemLabel="Yes" itemValue="Yes" />
                        <f:selectItem itemLabel="No" itemValue="No" />
                        <p:ajax update="error-row" />
                     </p:selectOneRadio>
              </td>


            </tr>
            <h:panelGroup id="error-row">
              <ui:fragment rendered="#{not empty facesContext.getMessageList(questionBinding.clientId)}">
                <tr>
                    <td colspan="2"><p:message for="questionId" id="msgQuestion" /></td>
                </tr>
              </ui:fragment>
            </h:panelGroup>
        </ui:repeat>

在 ajax 更新时调用 javascript:

....
        <p:ajax update="msgQuestion" oncomplete="clearEmptyRows()" />
....

使用javascript函数:

 <script>
            function clearEmptyRows() {
                $(".error-row").each(function(index) {
                    if ($(this).text().trim() == '') {
                        $(this).css("display", "none");
                    } else {
                        $(this).css("display", "table-row");
                    }
                });
            }
            $(document).ready(function() {
                clearEmptyRows();
            });
    </script>