التحقق من صحة نماذج متعددة في صفحة واحدة باستخدام Spring Web Flow وJSF

StackOverflow https://stackoverflow.com/questions/1008898

سؤال

أحاول استخدام JSF للتحقق من صحة نموذجين مختلفين في Spring Web Flows.

المشكلة هي أن validateAllOnClick يبدو أنه يقوم بطرد كل مدقق من جانب العميل على الصفحة.

يؤدي تعيين معرفات العملية إلى النموذج الذي أريد التحقق من صحة معرفه، أو معرف الإدخال، أو معرف المدقق إلى عدم تشغيل أي من أدوات التحقق من جانب العميل إذا قمت أيضًا بإزالة validateALlOnClick.يؤدي الاحتفاظ بـ validateAllOnClick وتعيين معرفات العملية على زر الإرسال إلى تنشيط جميع أدوات التحقق من جانب العميل.

كيف أقوم بالتحقق من جانب العميل باستخدام تدفق الويب الربيعي وJSF باستخدام نماذج متعددة؟

    <ui:define name="content">
        <div id="main-content">

        <div id="system">       
        <div class="leftcolumn">
        <ui:fragment>
        <h:form id="testForm">
            <div class="admin-title">User Management</div>
            <div class="system-panel"><span class="header">Add a new
            user</span>
            <table>

                <tr>
                    <td><h:outputLabel for="first_names" value="First Name:" /></td>
                    <td><sf:clientTextValidator required="true"
                        invalidMessage="Please enter user\'s first name " id="requiredFirstName">
                        <h:inputText id="first_names" required="true" />
                    </sf:clientTextValidator></td>
                </tr>
                <tr>
                    <td><h:outputLabel for="last_name" value="Last Name:" /></td>
                    <td><sf:clientTextValidator required="true"
                        invalidMessage="Please enter user\'s last name " id="requiredLastName">
                        <h:inputText id="last_name" required="true" />
                    </sf:clientTextValidator></td>
                </tr>
                <tr>
                    <td><h:outputLabel for="email" value="Email:" /></td>
                    <td><sf:clientTextValidator required="true"
                        invalidMessage="Please enter user\'s e-mail address" id="requiredEmail">
                        <h:inputText id="email" required="true" />
                    </sf:clientTextValidator></td>

                </tr>
                <tr>
                    <td>Set password to last name:<br />
                    (in lower case)</td>

                    <td><h:selectBooleanCheckbox id="init_password" value="true" />
                    </td>
                </tr>
                <tr>
                    <td colspan="2" align="right">
                    <div id="password" class='hide_password'><h:outputLabel
                        for="password" value="Password:" /> <h:inputText id="password" />

                    </div>
                    </td>
                </tr>
            </table>
            <sf:validateAllOnClick>
                <sf:commandButton id="addNewUserAction" action="addUser"
                    value="Add New User" processIds="requiredEmail, requiredLastName, requiredFirstName, email" />
                    </sf:validateAllOnClick>
    </div>

        </h:form> </ui:fragment>

        <ui:fragment>
            <h:form id="akeemForm">
                <div class="system-panel"><span class="header">Reset
                User's Password</span>
                <table>
                    <tr>
                        <td><h:outputLabel for="resetPasswordEmail" value="Email:" /></td>
                        <td><sf:clientTextValidator required="true"
                            invalidMessage="Please enter user\'s e-mail address" id="requiredEmail1" >
                            <h:inputText id="resetPasswordEmail" />
                        </sf:clientTextValidator></td>
                    </tr>
                    <tr>
                        <td><h:outputLabel for="resetPasswordPassword"
                            value="Password:" /></td>
                        <td><sf:clientTextValidator required="true"
                            invalidMessage="Please enter user\'s new password" id="requiredEmail2" >
                            <h:inputText id="resetPasswordPassword" />
                        </sf:clientTextValidator></td>
                    </tr>
                    <tr>
                        <td><h:outputLabel for="resetPasswordNotify"
                            value="Email User Their New Password:" /></td>
                        <td><h:selectBooleanCheckbox id="resetPasswordNotify"
                            value="true" /></td>
                    </tr>
                </table>

                    <sf:commandButton id="changeUserPasswordAction"
                        processIds="*" action="changeUserPassword"
                        value="Reset Password" />
        </div>
            </h:form>
        </ui:fragment> <h:form>
            <div class="system-panel"><span class="header">Manage
            User Profile</span>
            <table width="100%">
                <tr>

                    <td><h:outputLabel value="Search" /></td>
                    <td><h:inputText /></td>
                </tr>
            </table>
            <h:commandButton action="searchUser" value="Search" /></div>
        </h:form></div>
        <div class="rightcolumn">
        <div class="admin-title">Title Management</div>

        <h:form>
            <div class="system-panel"><span class="header">Add A
            Title</span> <br />
            <br />
            <h:commandButton id="addTitle"
                value='Start Process for Adding a Title' action="addTitle" /></div>

        </h:form>


        <div class="system-panel"><span class="header">Edit A
        Title</span> <!--<h:form>-->
        <table width="100%">
            <tr>
                <td class='td_name'>Book title:</td>
                <td><h:form>
                    <h:selectOneMenu id="currentSelectedBook"
                        value="#{bookSelector.selectedBook}">
                        <f:selectItems value="#{bookSelector.options}" />
                    </h:selectOneMenu>

                    <h:commandButton id="cmdButton" value="Go to book Dashboard"
                        action="updateBook" />

                </h:form></td>
            </tr>
        </table>
        <!--        <h:commandButton value="Go to the Edit Title interface" action="updateBook" />
    </h:form>   --></div>

        <h:form
            onsubmit="return confirm('Are you sure you want to delete this book?')">

            <div class="system-panel"><span class="header">Delete A
            Title</span>
            <table width="100%">
                <tr>
                    <td class='td_name'>Book title:</td>
                    <td>Book Select Here</td>
                </tr>
            </table>
            <h:commandButton value="Delete" action="deleteTitle" /></div>

        </h:form> <br />

        <div class="system-panel"><span class="header">Title
        Reports</span>
        <ul>
            <li>Titles without ISBNs or Billing Divisions - <h:form>
                <h:commandLink value="View Report" action="missingBillingIsbn" />
            </h:form></li>
        </ul>
        </div>


        </div>
        </div>


        <div class="clearer"></div>



        </div>
    </ui:define>
</ui:composition>
هل كانت مفيدة؟

المحلول

يمكنك إجراء عملية إعادة بناء بسيطة عن طريق جعل كل هذه النماذج على شكل t: نماذج فرعية (تشير علامة T إلى مكتبة tomahawk التي تعمل بشكل جيد مع JSF) ثم قم بإدراج كل هذه النماذج الفرعية في

بمجرد الانتهاء من ذلك، يمكنك استدعاء النماذج الفرعية الانتقائية باستخدام t:commandbutton.

يساعدك هذا البيان على إرسال نماذج متعددة (بشكل انتقائي) باستخدام زر واحد.انظر إلى الوثائق التالية.http://myfaces.apache.org/tomahawk-project/tomahawk12/tagdoc/t_subform.html

أيضًا في JSF، للتحقق من صحة المكون، لا تنس استخدام السمات المطلوبة = "true"، وإلا فلن تبدأ عمليات التحقق بالفعل.

أتمنى أن يساعد ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top