문제

나는 성배를 처음 접했고 문제가 있습니다.

이 gsp의 스 니펫이 있습니다.

<g:form url="[controller:'main',action:'login']"> 
  <label for="name">Usuario:</label><br/> 
  <input type="text" name="name" /><br/> 
  <label for="pass">Password:</label><br/> 
  <input type="password" name="password"/><br/> 
  <input type="submit" value="Login"/><br/> 
  <g:renderErrors bean="${cmd}"/> 
</g:form> 

컨트롤러 (maincontroller.groovy)는 명령 개체를 사용합니다. 다음은 다음과 같습니다.

def login = { LoginCommand cmd -> 
  if(cmd.validate()){ 
  redirect(action:'ok') 
  }else{ 
  render(view:'index',model:[cmd:cmd]) 
  } 
  } 

class LoginCommand { 

        String name 
        String password 

        static constraints = { 
                name(blank:false,size:5..10) 
                password(blank:false,size:5..10) 
        } 
} 

문제는 내가 나쁜 이름을 입력하거나 패스 할 때 (빈 또는 범위 외부)라는 것입니다. 4 개의 오류, 비밀번호의 경우 2 개, 사용자 이름은 2 개를 보여줍니다.. 그것들은 동일하지만 복제되었습니다.

"bool validecommand () {name && password}"메소드를 작성하고 명령으로 대체하는 것은 중복을 던지지 않지만 Grails의 제약 조건 기능을 사용하여 물건을 건조하게 유지하고 싶습니다.

왜 이런 일이 일어나는지 아십니까? 정말 고마워!

도움이 되었습니까?

해결책

명령 개체를 컨트롤러 동작에 주입하면 성배가 실행됩니다. validate() 자동으로, 수동으로 호출 할 필요가 없습니다. 노력하다

if(!cmd.hasErrors())

대신에

if(cmd.validate())

모든 전화에 대한 것 같습니다 validate() 명령 개체에 새 (복제) 오류가 추가됩니다. IMHO 이것은 일어나서는 안되며 아마도 성배의 버그 일 것입니다. 당신은 고려해야합니다 보고 이 문제.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top