从 Grails GSP 中的 User-class springSecurityService 读取未生成的属性
Reading ungenerated properties from User-class springSecurityService in a Grails GSP
我正在用 Grails 编写更新用户数据表单。它必须在更新前在字段中显示旧用户数据。这是此表格的一部分:
<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>
这是我的域用户的一部分-class:
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
}
...
}
域 class 的生成的用户名-属性 正确,但是当我尝试请求未生成的 firstName-属性 时,出现错误:
URI:/restorator/visitorSpace/editPrivateDataClass:groovy.lang.MissingPropertyExceptionMessage:
No such property: firstName for class: grails.plugin.springsecurity.userdetails.GrailsUser
已解决。我已经通过使用参数渲染 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"/>
我正在用 Grails 编写更新用户数据表单。它必须在更新前在字段中显示旧用户数据。这是此表格的一部分:
<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>
这是我的域用户的一部分-class:
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
}
...
}
域 class 的生成的用户名-属性 正确,但是当我尝试请求未生成的 firstName-属性 时,出现错误:
URI:/restorator/visitorSpace/editPrivateDataClass:groovy.lang.MissingPropertyExceptionMessage:
No such property: firstName for class: grails.plugin.springsecurity.userdetails.GrailsUser
已解决。我已经通过使用参数渲染 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"/>