簡體   English   中英

如何更新特定的Grails域類屬性?

[英]How to update specific Grails domain class properties?

我正在嘗試更新當前登錄用戶的密碼。 但這向我顯示了空點異常。

配置文件控制器:

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")
        }
    }
} 

ProfileService:

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錯誤--[nio-8080-exec-8] ogweb.errors.GrailsExceptionResolver:處理請求時發生NullPointerException:[POST] / profile / doPasswordChange-參數:密碼:abcdqrty newPassword: 12345 ConfirmPassword:12345登錄名:Change Password Stacktrace如下:

java.lang.reflect.InvocationTargetException:在org.grails.core.DefaultGrailsControllerClass.invoke(DefaultGrailsControllerClass.java:188)處在org.grails.core.DefaultGrailsControllerClass.invoke(DefaultGrailsControllerClass.java:188)在org.grails.core.DefaultGrailsControllerClass $ ReflectionInvoker.invoke(DefaultGrailsControllerClass.java:211)處為null。 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)處的web.mapping.mvc.UrlMappingsInfoHandlerAdapter.handle(UrlMappingsInfoHandlerAdapter.groovy:90)在org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet。 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)(org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)org.springframework.web.servlet org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)的.FrameworkServlet.service(FrameworkServlet.java:846)org.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilt org.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:67)處的erInternal(GrailsWebRequestFilter.java:77)在java.util.concurrent處的java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)處java.lang.Thread.run(Thread.java:748)上的.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)原因:java.lang.NullPointerException:org.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor處為null org.grails.orm.hibernate.support的.getModifiedPropertiesWithAutotimestamp(ClosureEventTriggeringInterceptor.java:206)在org.grails.orsure.TriggeringTriggeringTriggeringInterrig。 )的org.hibernate.action.internal.EntityUpdateAction.execute(EntityUpdateAction.java:118)的org.hibernate.action.internal.EntityUpdateAction.preUpdate(EntityUpdateAction.java:244) g.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:589)在org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:463)在org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions( org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39)的org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1295)的org.grabs.orm.hibernate的AbstractFlushingEventListener.java:337)在org.grails.orm.hibernate上的.AbstractHibernateGormInstanceApi.flushSession(AbstractHibernateGormInstanceApi.groovy:289)在org.grails.Execute。 )在org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:243)在org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:117)在org.grails.orm.hiberna 在org.grails.orm.hibernate.te。 com.santho.bitmascot.ProfileService.doPasswordChange(ProfileService.groovy:15)處com.santho.bitmascot.ProfileController.doPasswordChange(ProfileController.groovy:24)處...省略了14個常見框架

我嘗試僅將新值分配給其他成員類屬性。 同樣的錯誤。 我該如何解決?

在視野中

在表單中添加屬性useToken =“ true”

withForm {
//ur origin code in action
}.invalidToken {
//what to do when token invalidate
        }
在控制器中

將您的操作代碼放入withForm {}

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM