【发布时间】:2012-05-01 14:37:58
【问题描述】:
在 gsp 中更改域类属性的方法是什么?
例如:
一个领域类项目有一个日期类型的dueDate。 我想在 gsp 中设置日期而不使用标签 原因是,我正在使用 jquery 的 datepicker,这很好,因为它没有一个丑陋的 mm/dd/yyyy 下拉列表,它有一个不错的小日历可供单击。 任何人,有什么想法吗?
提前致谢 :D :D :D
【问题讨论】:
标签: grails gsp grails-domain-class
在 gsp 中更改域类属性的方法是什么?
例如:
一个领域类项目有一个日期类型的dueDate。 我想在 gsp 中设置日期而不使用标签 原因是,我正在使用 jquery 的 datepicker,这很好,因为它没有一个丑陋的 mm/dd/yyyy 下拉列表,它有一个不错的小日历可供单击。 任何人,有什么想法吗?
提前致谢 :D :D :D
【问题讨论】:
标签: grails gsp grails-domain-class
好吧,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>
【讨论】:
有一个 Grails JQuery UI 插件可能适合您的需求。请参阅http://grails.org/plugin/jquery-ui 了解更多信息。
即使这个特定的插件不适合您的需求,我认为会有一个插件可以满足您的需求。
【讨论】:
【讨论】: