0

フィールド (電話、メール、パスワード) を含むフォームを作成したいのですが、正確なレイアウトはこちらを参照してください。編集ボタンがクリックされない限り、フォームはすべてラベルとして表示され、ラベルはテキストボックスになります。Grails ボタンには表示/読み取り専用のプロパティがないため、リモートアクション ボタンを選択しました。私の問題は、作成したテンプレートを含むフォームにすべてを表示できないように見えることです (編集ボタンをクリックしない限り、ラベル/テキスト フィールドが表示されます) が、最初の読み込みでは表示されません。

テンプレート: 電子メール:

    <g:if test="${!isEditEmail}">
              <td id="email">${profileInstance?.email}</td></g:if>
        <g:else>
            <td><g:textField name="emailTxt" value="${profileInstance?.email}" />
  </td></g:else>

電話

    <g:if test="${!isEditPhone}">
              <td id="email">${profileInstance?.phone}</td></g:if>
        <g:else>
            <td><g:textField name="emailTxt" value="${profileInstance?.phone}" />
            </td></g:else>

電話の「プロファイル」と呼ばれる My GSP のスニペット コード:

    <th scope="row"><label for="profileEditPhone">Phone:</label></th>

     <td id="showPhoneText"></td>

    <td><g:actionSubmit id="btnEditPhone"  action="setPhoneTxtAreaVisible" update="showPhoneText" value="${message(code: 'default.button.edit.label', default: 'Edit')}" /></td>

  </tr>

ここに私のコードがあります:

def setPhoneTxtAreaVisible=
    {
        def employeeId= params.employeeId

        MySession session = MySession.getMySession(request, params.employeeId)
        isEditPhone=true
        profileInstance = session.profileInstance

        render(template:"/layouts/phoneProfile", model:[profileInstance:session.profileInstance, isEditPhone:true])


    }

これは <td id="showPhoneText"></td>うまく機能していますが、「btnEditPhone」ボタンをクリックしない限り、出力には値がなく、GSP (プロファイル) に表示されません。

だから私は自分のコードを次のように変更しました:

def profile=
    {
        def employeeId= params.employeeId


    MySession session = MySession.getMySession(request, employeeId)

    //findAllByCmCaseIdCmCase
    def employee = Employee.get(employeeId as Long)
    def empUser = EmployeeUser.findByEmployeeIdEmployee(employee)
    profileInstance = new Profile();
    profileInstance.id=employeeId as Long
    profileInstance.userName  = empUser.useridUsers.username
    profileInstance.password = empUser.useridUsers.passwordText
    profileInstance.email = employee.emplEmailAddr
    profileInstance.employeeName = employee.formatFirstLastName()
    profileInstance.phone = employee.formattedEmplWorkTelNbr()
    session.profileInstance = profileInstance

    if(profileInstance)
    {

        render(template:"/layouts/phoneProfile", model:[profileInstance:session.profileInstance, isEditPhone:false])
    }

    return [profileInstance: profileInstance, mySession: session, isEditEmail:false]
}

-うまく機能しません。電話テンプレートのみをレンダリングします。

そのため、更新を使用する代わりに、html コードをこれに変更しました

<tr>
        <th scope="row"><label for="profileEditPhone">Phone:</label></th>
           <td ><g:render template="/layouts/phoneProfile" /></td>

        <td> <g:submitToRemote action="setPhoneTxtAreaVisible" value="${message(code: 'default.button.edit.label', default: 'Edit')}"  /></td>
        <td>&nbsp;</td>

      </tr>

- 思い通りに動かない。

質問: 編集ボタンをクリックせずに、FIRST LOAD にすべてのテンプレートが既にあるプロファイル ページを表示するにはどうすればよいですか?

4

0 に答える 0