Manter parametros on submit
25/11/2016 09:20
0
Bom estou com uma pequena dúvida.

Estou com um projeto aqui e não sei como proceder com o mesmo.
O cliente não quer que eu trabalhe com ajax. =[

Ele quer que o usuário preencha o form e de o submit, que verifique todas as regras de negócio e que retorne caso tenha erro ou validação para a mesma tela com o erro impresso e com os parâmetros no formulário preenchidos.

Alguém tem uma ideia de como fazer isso?

Olha como ta o código dele hoje.

def save() {
try {
flash.params = params
personService.savePerson(params)
flash.message = message(code: "zeta.person.save.success")
render(view: "create")
}catch (Exception e){
flash.error = message(code: e.message)
render(view: "create",var: params)
}
}
Tags: Grails


0
Você pode devolver os params no render , assim:  render(view: "create",model:[params:params])
25/11/2016 15:27


0
Olá, que versão do Grails vc está utilizando?
26/11/2016 14:47


0
?Este projeto é 2.5.5
Irei tentar aqui passando o model nos params vamos ver como funcionará


0
Problema resolvido e ainda fiz mais, depois posto o código aqui. Não precisei fazer muita coisa segui uma forma que ja trabalhava antes e o cliente aceitou ficou melhor e mais bonito também =]


0
Por favor, compartilhe a ideia geral.
Parabens!
29/11/2016 09:27


0
Então retomando este tópico aqui estava em viagem por isso não respondi.
Utilizadno try catch o mesmo não mantem as informações vou postar aqui como estava a app.

 @Secured(['ROLE_ADMIN'])    @Transactional    def save() {        def personInstance = new Person(params)        try {            flash.params = params            personInstance = personService.savePerson(params)            flash.message  = message(code: "zeta.person.save.success")            redirect(action: "show", id: personInstance.id)        }catch (Exception e){            flash.error = message(code: e.message)            render(view: 'create',model:[personInstance: personInstance])        }    }


def Person savePerson(params){ try { validadePerson(params) Person person = new Person() SecUser user = new SecUser() Role role = Role.findByAuthority(params.role) user.username = params.login user.password = params.password user.save() person.name = params.name person.surname = params.surname person.birth = new Date().parse("dd/MM/yyyy", params.birth) person.email = params.email person.secUser = user person.save() SecUserRole.create(user,role) return person }catch (Exception e){ throw e } } /** * * @param params */ def validadePerson(params){ if(params?.name == null || params?.name.toString().trim().isEmpty()){ throw new Exception("zeta.person.name.validate") } if(params?.surname == null || params?.surname.toString().trim().isEmpty()){ throw new Exception("zeta.person.surname.validate") } if(params?.birth == null || params?.birth.toString().trim().isEmpty()){ throw new Exception("zeta.person.birth.validate") } if(params?.email == null || params?.email.toString().trim().isEmpty()){ throw new Exception("zeta.person.email.validate") } if(params?.login == null || params?.login.toString().trim().isEmpty()){ throw new Exception("zeta.person.login.validate") } if(params?.password == null || params?.password.toString().trim().isEmpty()){ throw new Exception("zeta.person.password.validate") } if(params?.role == null || params?.role.toString().trim().isEmpty()){ throw new Exception("zeta.person.role.validate") } }


Então quando cai nas exceptions o mesmo não mantém os dados.

Exemplo, se eu digitar no form da pessoa somente nome o mesmo tem que informar que o sobrenome é obrigatório e manter o nome na tela.

Desculpa a demora mas estou de volta =]


0
Desculpa o código ficou ruim aqui abaixo formatado.

 @Secured(['ROLE_ADMIN'])
@Transactional
def save() {
  def personInstance = new Person(params)
  try {
flash.params = params
personInstance = personService.savePerson(params)
flash.message  = message(code: "zeta.person.save.success")
redirect(action: "show", id: personInstance.id)
  }catch (Exception e){
flash.error = message(code: e.message)
render(view: 'create',model:[personInstance: personInstance])
  }
}


 /**
     *
     * @param params
     * @return
     */
    def Person savePerson(params){
        try {
            validadePerson(params)
            Person person = new Person()
            SecUser user = new SecUser()
            Role role = Role.findByAuthority(params.role)
            user.username = params.login
            user.password = params.password
            user.save()
            person.name = params.name
            person.surname = params.surname
            person.birth =  new Date().parse("dd/MM/yyyy", params.birth)
            person.email = params.email
            person.secUser = user
            person.save()
            SecUserRole.create(user,role)
            return person
        }catch (Exception e){
           throw  e
        }
    }
    /**
     *
     * @param params
     */
    def validadePerson(params){
        if(params?.name == null || params?.name.toString().trim().isEmpty()){
                throw  new Exception("zeta.person.name.validate")
        }
        if(params?.surname == null || params?.surname.toString().trim().isEmpty()){
            throw  new Exception("zeta.person.surname.validate")
        }
        if(params?.birth == null || params?.birth.toString().trim().isEmpty()){
            throw  new Exception("zeta.person.birth.validate")
        }
        if(params?.email == null || params?.email.toString().trim().isEmpty()){
            throw  new Exception("zeta.person.email.validate")
        }
        if(params?.login == null || params?.login.toString().trim().isEmpty()){
            throw  new Exception("zeta.person.login.validate")
        }
        if(params?.password == null || params?.password.toString().trim().isEmpty()){
            throw  new Exception("zeta.person.password.validate")
        }
        if(params?.role == null || params?.role.toString().trim().isEmpty()){
            throw  new Exception("zeta.person.role.validate")
        }
    }


0
Mesmot passando
render(view: "create",model:[params:params])
No trataento da excepetion o mesmo não funciona

Sugestões?



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto