2012-04-20 119 views
0

更改gsp域类属性的方法是什么?Grails,从gsp更改域类属性

例如:

域类项目具有类型为date的dueDate。 我想在gsp内设置它的日期而不使用标签 原因是,我使用的jquery的datepicker,这是很好的,因为而不是有一个丑陋的下拉mm/dd/yyyy它有一个很好的小日历一点击。 Anywho,有什么想法?

在此先感谢:d:d:d

回答

1

好,Grails使用一个MVC模式,因此,你不应该直接更改域类属性在一个GSP页面内。

当然你也可以使用JQuery的日期选择器,但你应该成功地提供一个控制器动作来更新您的域类物业

def updateDateUsingAjax() { 
    def domain = MyDomain.load(params.id) 

    /* 
    Lets pretend the content of params.date has the format MM/dd/yyyy 
    You can use Date.parse method of the Groovy JDK to create a java.util.Date instance of a String. 
    http://groovy.codehaus.org/groovy-jdk/java/util/Date.html#parse(java.lang.String, java.lang.String) 
    */ 

    domain.myDate = Date.parse('MM/dd/yyyy', params.date) 

    domain.save() 
} 

现在你必须写是一个Ajax调用该控制器的动作和你将表示层与应用程序的其余部分分开。

以下是您的GSP的外观。

<!doctype html> 
<html> 
<head> 
    <meta name="layout" content="main"/> 
    <title>Welcome to Grails</title> 
    <r:require module="jquery-ui"/> 
</head> 
<body> 
<div> 
    <g:formRemote name="myForm" url="[controller: 'standard', action: 'updateDateUsingAjax']" onSuccess="showDialog()"> 
     <p>Your date: <g:textField name="pick"/> </p> 
     <p><g:hiddenField name="id" value="your id"/></p> 
     <input type="submit" value="Delete Book!" /> 
    </g:formRemote> 

</div> 

<div id="dialog" title="Success" style="display:none;"> 
    <p>You have successfully updated your date</p> 
</div> 

<script type="text/javascript"> 
    $(document).ready(function() 
    { 
     $("#pick").datepicker({dateFormat: 'yy/mm/dd'}); 
    }) 

    function showDialog() { 
     $("#dialog").dialog(); 
    } 
</script> 
</body> 

+0

那么如何将“新日期()”传递给这个控制器调用。因为即使没有ajax,我也可以用下面的语法调用控制器方法: $ {updateDateUsingAjax()} 对不对? 但事情是,我如何通过一个新的日期?我有点失落,我看到你的想法,这似乎是天才,但我错过了一些细节。因为现在我所能做的就是使用内置的标签。谢谢你的想法,我只想更多地理解它。 – 2012-04-20 08:28:20

+0

只需一秒钟,我正试图为您提供示例视图。所以你得到整个上下文 – saw303 2012-04-20 09:00:17

+0

好吧,非常感谢你,因为我超级迷失。事实上,现在我不知道如何在gsp中真正调用控制器。我们所有的东西都将脚手架设置为真,然后我们删除了它,并且所有东西都是自动创建的。我正在尝试阅读文档,并且没有意义如何做这种事情。 – 2012-04-20 09:12:09

0

有可能满足您的需要一个Grails JQuery用户界面插件。有关更多信息,请参阅http://grails.org/plugin/jquery-ui

即使这个特定的插件不适合您的需求,我会认为会有一个插件那里会。

+0

这只是没有在所有的工作,我得到提交错误,它没有提交类型日期或类似的东西。 – 2012-04-24 03:24:01