gpt4 book ai didi

java - 如何更新特定的 Grails 域类属性?

转载 作者:行者123 更新时间:2023-12-02 03:18:48 25 4
gpt4 key购买 nike

我正在尝试更新当前登录用户的密码。但它向我显示了空点异常。

配置文件 Controller :

def doPasswordChange(){
def response = authenticationService.getMember()
if (!response) {
flash.message = AppUtil.infoMessage(g.message(code: "invalid.entity"), false)
redirect(controller: "profile", action: "changePassword")
} else {
response = profileService.doPasswordChange(response, params)
if (!response.isSuccess) {
flash.redirectParams = response.model
flash.message = AppUtil.infoMessage(g.message(code: "password.not.change"), false)
redirect(controller: "profile", action: "changePassword")
} else {
flash.message = AppUtil.infoMessage(g.message(code: "updated"))
redirect(controller: "profile", action: "index")
}
}
}

个人资料服务:

def doPasswordChange(Member member, GrailsParameterMap params){
params.password = params.password.encodeAsMD5()
params.newPassword = params.newPassword.encodeAsMD5()
params.confirmPassword = params.confirmPassword.encodeAsMD5()
def response = AppUtil.saveResponse(false, member)
if(member.password==params.password && params.confirmPassword==params.newPassword){
member.password = params.newPassword //this line is gives me null point exception
if(member.validate()){
log.warn myDomainObj.errors.allErrors.join(' \n')
member.save(flush: true, failOnError:true)
response.isSuccess = true
}
else println("ok")
}
return response
}

给我这个错误:

2019-07-09 01:55:04.284 ERROR --- [nio-8080-exec-8] o.g.web.errors.GrailsExceptionResolver : NullPointerException occurred when processing request: [POST] /profile/doPasswordChange - parameters: password: abcdqrty newPassword: 12345 confirmPassword: 12345 login: Change Password Stacktrace follows:

java.lang.reflect.InvocationTargetException: null at org.grails.core.DefaultGrailsControllerClass$ReflectionInvoker.invoke(DefaultGrailsControllerClass.java:211) at org.grails.core.DefaultGrailsControllerClass.invoke(DefaultGrailsControllerClass.java:188) at org.grails.web.mapping.mvc.UrlMappingsInfoHandlerAdapter.handle(UrlMappingsInfoHandlerAdapter.groovy:90) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55) at org.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:77) at org.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:67) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.NullPointerException: null at org.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor.getModifiedPropertiesWithAutotimestamp(ClosureEventTriggeringInterceptor.java:206) at org.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor.synchronizeHibernateState(ClosureEventTriggeringInterceptor.java:188) at org.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor.onPreUpdate(ClosureEventTriggeringInterceptor.java:249) at org.hibernate.action.internal.EntityUpdateAction.preUpdate(EntityUpdateAction.java:244) at org.hibernate.action.internal.EntityUpdateAction.execute(EntityUpdateAction.java:118) at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:589) at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:463) at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:337) at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39) at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1295) at org.grails.orm.hibernate.AbstractHibernateGormInstanceApi.flushSession(AbstractHibernateGormInstanceApi.groovy:289) at org.grails.orm.hibernate.AbstractHibernateGormInstanceApi$_performSave_closure3.doCall(AbstractHibernateGormInstanceApi.groovy:254) at org.grails.orm.hibernate.GrailsHibernateTemplate.doExecute(GrailsHibernateTemplate.java:299) at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:243) at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:117) at org.grails.orm.hibernate.AbstractHibernateGormInstanceApi.performSave(AbstractHibernateGormInstanceApi.groovy:251) at org.grails.orm.hibernate.AbstractHibernateGormInstanceApi.save(AbstractHibernateGormInstanceApi.groovy:168) at org.grails.datastore.gorm.GormEntity$Trait$Helper.save(GormEntity.groovy:151) at com.santho.bitmascot.ProfileService.doPasswordChange(ProfileService.groovy:15) at com.santho.bitmascot.ProfileController.doPasswordChange(ProfileController.groovy:24) ... 14 common frames omitted

我尝试只为其他成员类属性分配新值。同样的错误。怎么解决呢?

最佳答案

在 View 中

在表单中添加属性 useToken="true"

<g:form  name="applyForm" useToken="true">
//ur code
</g:form>
在 Controller 中

将你的操作代码放入 withForm{}

withForm {
//ur origin code in action
}.invalidToken {
//what to do when token invalidate
}

关于java - 如何更新特定的 Grails 域类属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56942183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com