2015-04-03 3 views
0

Я пишу обновленную форму данных пользователя в Grails. Он должен показывать старые пользовательские данные в полях перед обновлением. Это является частью этой формы:Чтение негенерированных свойств из пользовательского класса SpringSecurityService в Grails GSP

<g:form class="form-signin" controller="VisitorSpace"> 
    <label for="login" class="sr-only">Login</label> 
    <g:textField id="login" class="form-control" name="login" placeholder="Login" 
     value="${applicationContext.springSecurityService.principal.username}" required="" autofocus=""/> 
    <label for="firstName" class="sr-only">Your name</label> 
    <g:textField id="firstName" class="form-control" name="firstName" placeholder="Your name" 
     value="${applicationContext.springSecurityService.principal.firstName}" required="" type="text"/> 
... 
</g:form> 

Это часть моего домена User-класса:

class Person { 

    transient springSecurityService 

    String username 
    String password 
    boolean enabled = true 
    boolean accountExpired 
    boolean accountLocked 
    boolean passwordExpired 

    String firstName 
    String lastName 
    String email 
    boolean isAdminCafee = false 
    static transients = ['springSecurityService'] 

    static constraints = { 
     username blank: false, unique: true 
     firstName blank: false 
     lastName blank: false 
     password blank: false 
     email blank: false, unique: true 
    } 
    ... 
} 

Сформирован имя пользователя-свойство класса домена получает правильно, но в то время как я пытаюсь запрос ungenerated firstName-property Я получаю сообщение об ошибке:

URI:/restorator/visitorSpace/editPrivateDataClass:groovy.lang.MissingPropertyExceptionMessage: 
No such property: firstName for class: grails.plugin.springsecurity.userdetails.GrailsUser 

ответ

0

Решено. Я решил эту проблему с помощью рендеринга gsp с параметрами. Рендер-действие GSP-контроллера:

def editPrivateData(){ 
     def user = springSecurityService.currentUser 
     render (view:'editPrivateData.gsp', model: [user: user]) 
    } 

Использование в GSP-форме:

<g:textField id="firstName" class="form-control" name="firstName" placeholder="Your name" var = "user" value="${user.firstName}" required="" type="text"/> 
Смежные вопросы