2010-01-13 4 views
1

내 모델의 일부인 Person 도메인 개체에 대한 편집 작업보기를 위해 Grails에서 생성 된 GSP 코드이며 ACEGI 보안 플러그 인의 인증을위한 기본 클래스이기도합니다. 나는 그것을 줄이기 위해 많은 재산을 잘라 냈다. 이 파일은 grails-app/views/person/edit.gsp기본 Grails 질문 : 다음 Grails 코드는 personInstance를 어떻게 정의합니까?

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
     <meta name="layout" content="main" /> 
     <g:set var="entityName" value="${message(code: 'person.label', default: 'Person')}" /> 
     <title><g:message code="default.edit.label" args="[entityName]" /></title> 
    </head> 
    <body> 
     <div class="nav"> 
      <span class="menuButton"><a class="home" href="${createLink(uri: '/')}">Home</a></span> 
      <span class="menuButton"><g:link class="list" action="list"><g:message code="default.list.label" args="[entityName]" /></g:link></span> 
      <span class="menuButton"><g:link class="create" action="create"><g:message code="default.new.label" args="[entityName]" /></g:link></span> 
     </div> 
     <div class="body"> 
      <h1><g:message code="default.edit.label" args="[entityName]" /></h1> 
      <g:if test="${flash.message}"> 
      <div class="message">${flash.message}</div> 
      </g:if> 
      <g:hasErrors bean="${personInstance}"> 
      <div class="errors"> 
       <g:renderErrors bean="${personInstance}" as="list" /> 
      </div> 
      </g:hasErrors> 
      <g:form method="post" > 
       <g:hiddenField name="id" value="${personInstance?.id}" /> 
       <g:hiddenField name="version" value="${personInstance?.version}" /> 
       <div class="dialog"> 
        <table> 
         <tbody> 

          <tr class="prop"> 
           <td valign="top" class="name"> 
            <label for="username"><g:message code="person.username.label" default="Username" /></label> 
           </td> 
           <td valign="top" class="value ${hasErrors(bean: personInstance, field: 'username', 'errors')}"> 
            <g:textField name="username" value="${personInstance?.username}" /> 
           </td> 
          </tr> 
...SNIP... 
a bunch of props 
         </tbody> 
        </table> 
       </div> 
       <div class="buttons"> 
        <span class="button"><g:actionSubmit class="save" action="update" value="${message(code: 'default.button.update.label', default: 'Update')}" /></span> 
        <span class="button"><g:actionSubmit class="delete" action="delete" value="${message(code: 'default.button.delete.label', default: 'Delete')}" onclick="return confirm('${message(code: 'default.button.delete.confirm.message', default: 'Are you sure?')}');" /></span> 
       </div> 
      </g:form> 
     </div> 
    </body> 
</html> 

내 질문은, 어떻게 필드 personInstance을 설정하고 인구가됩니까되고, 표준 위치에있는?

이것이 Grails의 작동 원리에 대한 기본적인 이해가 부족하다는 점을 이해하지만, 그럼에도 불구하고 나는 알아야 할 기본적인 질문이라고 생각합니다.

이것은 내 앱의 핵심 인 Person 개체 및 관련 데이터에 액세스하는 내 자신의 합성 페이지를 만들고자하는 욕망 때문입니다. 이 페이지와 함께 새 페이지를 만들 수 있기를 기대하면서 map.gsp으로 전화하고 personInstance에서 마법 같은 방법으로 보겠습니다. 나는 분명히 노력하고 있음에도 불구하고 그것을 어떻게 할 것인지를 생각할 수 없다. 나는 나의 이해의 중심에 바로 틈이 있다고 생각한다.

답변

6

PersonInstance가 컨트롤러에 채워집니다. 양식을 제출하면 연결된 컨트롤러가 양식에있는 필드가 포함 된지도를 받게됩니다.

그래서, 컨트롤러에 당신은 params를 필드를 포함하는 맵이 키를 사용에 정의 된 입력 요소의 이름은 컨트롤러에 대한 submited되어

personInstance.properties = params 

과 같은 명령을 찾을 수 있습니다 당신의 gsp 파일.

+0

고마워, 그게 내가 필요한 작은 힌트 였어. 어떤 것들은 나를 위해 제자리에 빠졌습니다. security.groovy ...에 정의 된 기본 전달 URI를 사용하여 로그인 페이지에서 매개 변수 양식을 내 페이지로 전달하는 방법에 대한 두 번째 질문이 있지만 다른 질문을 할 것입니다. – Simon