Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails 如何从Controller中的服务类访问日期变量_Grails - Fatal编程技术网

Grails 如何从Controller中的服务类访问日期变量

Grails 如何从Controller中的服务类访问日期变量,grails,Grails,我有下面的模型课 public class User{ String firstName String lastName Date startDate Date endDate static constraint(){ firstname(nullable:true) lastname(nullable:true) startDate endDate }

我有下面的模型课

public class User{

    String firstName
    String lastName
    Date startDate
    Date endDate
    static constraint(){
           firstname(nullable:true)
           lastname(nullable:true)
           startDate
           endDate
     }
    }
我的服务班

  public class UserService {
    public void addUser(String firstName, String lastName, Date startDate, Date endDate){
    User user = new User()
    user.firstName=firstName
    user.lastName=lastName
    user.startDate=startDate
    user.endDate=endDate
     }
    }
现在我的问题是如何访问控制器中的日期变量 我的控制器类

public class UserController {
def applyService
def register = applyService.addUser(params.firstName.toString(), params.lastName.toString()

现在我不知道如何访问我的
startDate
endDate
变量。。。。我无法使用参数访问它们,因为它们不是字符串…任何解决方案。我是grails的新手

如果我是你,我会做如下改变

def register = applyService.addUser(params.firstName.toString(),params.lastName.toString()
,parseDate(params['startDate'] ,
 parseDate(parmas['endDate']))
假设您使用的是GrailsVersion>2.3,则更改如下

Config.groovy中的设置

grails.databinding.dateFormats = [
        'MMddyyyy', 'yyyy-MM-dd HH:mm:ss.S', "yyyy-MM-dd'T'hh:mm:ss'Z'"]


import org.grails.databinding.BindingFormat

public class User{

    String firstName
    String lastName
    @BindingFormat('yyyy-MM-dd HH:mm:ss.S')  // or any format you like
    Date startDate
    @BindingFormat('yyyy-MM-dd HH:mm:ss.S') 
    Date endDate
    static constraint(){
           firstname(nullable:true)
           lastname(nullable:true)
           startDate
           endDate
     }
    }

干杯

您忽略了Grails最强大的功能之一:

我会这样做:

class UserController {

    def userService

    def save = {
        def user = new User(params)
        userService.addUser(user)
    }

}
当在控制器上用param映射实例化域对象时,Grails将为您找出用户字段的正确类型,并相应地设置它们。在您的服务上,您可以简单地持久化实例


我建议您也去看看。

当您呼叫服务方法时。您能发布完整的行动吗?这可能会有帮助:我不再去了。如您所见,我通过使用
params.firstName
params.lastName
访问了
firsName
lastName
变量,然后我想包括日期变量。我该怎么做?你测试过我的答案了吗,我只是用了一个日期?或者发布您的gps文件?

我使用它作为u输入,但它返回以下erorr<代码>没有方法签名:com.registration.admin.ApplyController.parseDate()适用于参数类型:(java.lang.String)值:[10-09-2012]有什么帮助吗?