标签: command-objects

在Grails中获取命令对象中的会话

如何从命令对象中获取会话?

我试过了:

import org.springframework.security.context.SecurityContextHolder as SCH

class MyCommand {
   def session = RCH.currentRequestAttributes().getSession()
}
Run Code Online (Sandbox Code Playgroud)

这引发了

java.lang.IllegalStateException:找不到线程绑定请求:您是指实际Web请求之外的请求属性,还是处理最初接收线程之外的请求?如果您实际在Web请求中操作并仍然收到此消息,则您的代码可能在DispatcherServlet/DispatcherPortlet之外运行:在这种情况下,请使用RequestContextListener或RequestContextFilter来公开当前请求.

grails spring command-objects

3
推荐指数
1
解决办法
1685
查看次数

命令对象和hasmany

commandObject当我提交表单时,我正在尝试使用它来验证我的数据.我可以在中验证hasMany关系吗commandObject?我的cenario是这样的.

牵引简单的classeswhith有很多关系:

class Book{
    String nameBook
}

class Author{
    String nameAuthor
    static hasMany = [books:Book]    
}
Run Code Online (Sandbox Code Playgroud)

很简单commandObject,我想在提交表单时验证hasMany.

@grails.validation.Validateable
class MyValidateCommand{

    String nameAuthor
    static hasMany = [books:Book]


    static constraints = {
        nameAuthor nullable:false
        books nullable:false
    }

}
Run Code Online (Sandbox Code Playgroud)

ps:我知道这个commandObject是错误的,它不编译.但我可以这样做吗?

grails command-objects

2
推荐指数
1
解决办法
843
查看次数

Grails - 命令对象的专用源文件夹?

从我所看到的,大多数人将命令对象放在控制器内(我不是它的粉丝)或将它们放在src/groovy文件夹中的某个位置.

但是,我喜欢Grails如何为控制器,域,服务等提供特定文件夹,并且认为为命令对象创建新的源文件夹会很棒./ grails-app /命令或者/ src /命令.以这种方式布局将有助于鼓励使用命令对象.

我有点担心这样做可能会破坏一些依赖于特定项目结构惯例的grails魔法.运行一些快速测试后,我确实验证了数据绑定和域约束导入似乎仍能正常运行.

对这种方法有任何想法或反对意见吗?

grails command-objects

2
推荐指数
1
解决办法
800
查看次数

Grails重复错误消息

我是grails的新手,我有一个问题:

我有这个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> 
Run Code Online (Sandbox Code Playgroud)

Controller(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) 
        } 
} 
Run Code Online (Sandbox Code Playgroud)

问题是,当我输入错误的名称或传递(空白或超出范围)时,它会显示4个错误,两个用于密码,两个用于用户名.它们是相同的,但重复.

我发现创建一个方法"bool validateCommand(){name && password}"并将其替换为command.validate()不会抛出重复项,但我想使用Grails的约束功能来保持DRY.

知道为什么会这样吗?非常感谢!

validation grails groovy command-objects

1
推荐指数
1
解决办法
1012
查看次数

如何将数据绑定到具有嵌套属性的命令对象?(非域对象)

我试图将一些数据绑定到作为命令对象一部分的对象.尝试使用它时,该对象保持为null.可能我没有在gsp中给出正确的数据,但我不知道我做错了什么!

我希望当我提交一个带有字段名称'book.title'的表单时,这将被映射到命令对象..但是这会失败..标题保持[null]

每当我更改命令对象和表单以使用字符串标题作为属性它工作..

// the form that submits the data
<g:form>
   <g:textField name="book.title" value="Lord Of the Rings"/><br>
   <br><br>
   <g:actionSubmit action="create" value="Create!"/>
</g:form>


// the controller code
def create = { BooksBindingCommand cmd ->
   println cmd?.book?.title // the book property always stays null
   redirect(action: "index")
}

// the command object
class BooksBindingCommand {
   Book book
}

// the book class, simple plain groovy class
class Book {
   String title
}
Run Code Online (Sandbox Code Playgroud)

关于为什么'book.title'的绑定失败的任何建议?

grails groovy command-objects

1
推荐指数
1
解决办法
2086
查看次数

标签 统计

command-objects ×5

grails ×5

groovy ×2

spring ×1

validation ×1