【问题标题】:Grails, change domain class property from gspGrails,从 gsp 更改域类属性
【发布时间】:2012-05-01 14:37:58
【问题描述】:

在 gsp 中更改域类属性的方法是什么?

例如:

一个领域类项目有一个日期类型的dueDate。 我想在 gsp 中设置日期而不使用标签 原因是,我正在使用 jquery 的 datepicker,这很好,因为它没有一个丑陋的 mm/dd/yyyy 下拉列表,它有一个不错的小日历可供单击。 任何人,有什么想法吗?

提前致谢 :D :D :D

【问题讨论】:

    标签: grails gsp grails-domain-class


    【解决方案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>
    

    【讨论】:

    • 那么我如何将“new Date()”传递给这个控制器调用。因为即使没有 ajax,我也可以使用以下语法调用控制器方法: ${updateDateUsingAjax()} 对吗?但问题是,我如何传递一个新的日期呢?我有点迷茫,我看到了你的想法,这似乎是天才,但我错过了一些细节。因为现在我所能做的就是使用内置的 标签。谢谢你的想法,我只是想了解更多。
    • 请稍等一下,我想为您提供一个示例视图。这样您就可以了解整个上下文
    • 好的,非常感谢,因为我迷路了。事实上,现在我不知道如何在 gsp 中真正调用控制器。我们所有的东西都将脚手架设置为 true,然后我们删除了它,一切都是自动创建的。我正在尝试通读文档,但如何做这种事情是没有意义的。
    • 现在您找到了可能解决您问题的 GSP 代码
    • 天啊,非常感谢,这里有很多细节,你帮我澄清了。我不认为你可以通过它的名字来影响一个 grails 标签,我认为你只能影响你自己已经给一个 id 的 html 元素。
    【解决方案2】:

    有一个 Grails JQuery UI 插件可能适合您的需求。请参阅http://grails.org/plugin/jquery-ui 了解更多信息。

    即使这个特定的插件不适合您的需求,我认为会有一个插件可以满足您的需求。

    【讨论】:

    • 这根本不起作用,我收到提交错误,它不是以类型日期或类似的形式提交的。
    【解决方案3】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-15
      • 1970-01-01
      • 2011-11-18
      • 2016-07-09
      • 2015-06-08
      • 1970-01-01
      相关资源
      最近更新 更多