微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Grails数据绑定问题

如何解决Grails数据绑定问题

| 这里缺少什么,因为当验证失败时,呈现的页面不会显示先前引入的值,因此用户无法对其进行更正。请使用缺少的代码更新我的代码!一切正常,除了在验证失败后返回时,以前引入的值已消失。 add.gsp
    <div id=\"stylized\" class=\"myform\">
<g:form controller=\"conference\" action=\"save\">
<h1>Add New Conference Record</h1>
<p>Basic information</p>

<label>Name
<span class=\"small\">Add your name</span>
</label>
<input type=\"text\" name=\"name\" /><br>

...
...

<p>Dates</p>

<label>Start Date
<span class=\"small\">First Day</span>
</label>
<g:datePicker name=\"startDate\" precision=\"day\" value=\"${new Date()}\"/><br><br>

<label>End Date
<span class=\"small\">First Day</span>
</label>
<g:datePicker name=\"endDate\" precision=\"day\" value=\"${new Date()}\"/><br><br>


...
...

<g:submitButton name=\"save\" value=\"Save\" id=\"addConference\"/>


<div class=\"spacer\"></div>
  </g:form>

                <g:hasErrors bean=\"${conferenceInstance}\">
            <div class=\"errors\">
                <g:renderErrors bean=\"${conferenceInstance}\" as=\"list\" />
            </div>
            </g:hasErrors>

</div>
会议控制器
  def save = {
        def conferenceInstance = new Conference(params)
        if (conferenceInstance.save(flush: true)) {
            flash.message = \"${message(code: \'default.created.message\',args: [message(code: \'conference.label\',default: \'Cferenceon\'),conferenceInstance.id])}\"
            redirect(action: \"/index\")
        }
        else {
            render(view: \"add\",model: [conferenceInstance: conferenceInstance])
        }
    }
    

解决方法

教人钓鱼 验证失败时,Grails脚手架会显示先前的值,因此查看此方法如何工作的最简单方法是运行:
grails generate-all Conference
然后研究生成的控制器和GSP的代码。 勺喂答案 问题出在您的GSP代码中,如果您指定
<g:datePicker name=\"startDate\" precision=\"day\" value=\"${new Date()}\"/>
日期选择器将始终显示今天的日期。同样,此文本字段将始终为空白:
<input type=\"text\" name=\"name\" />
因为您尚未指定
value
属性。 当验证失败时,您需要从验证失败的Bean中获取值,因此将以上内容替换为:
<g:datePicker name=\"startDate\" precision=\"day\" value=\"${conferenceInstance?.date}\"/>
<input type=\"text\" name=\"name\" value=\"${conferenceInstance?.name}\"/>
    ,让我知道是否可行。
   <div id=\"stylized\" class=\"myform\">
<g:form controller=\"conference\" action=\"save\">
<h1>Add New Conference Record</h1>
<p>Basic Information</p>

<label>Name
<span class=\"small\">Add your name</span>
</label>
<input type=\"text\" name=\"name\" value=\"${conferenceInstance.name}/><br>

...
...

<p>Dates</p>

<label>Start Date
<span class=\"small\">First Day</span>
</label>
<g:datePicker name=\"startDate\" precision=\"day\" value=\"${conferenceInstance.startDate}\"/><br><br>

<label>End Date
<span class=\"small\">First Day</span>
</label>
<g:datePicker name=\"endDate\" precision=\"day\" value=\"${conferenceInstance.endDate}\"/><br><br>


...
...

<g:submitButton name=\"save\" value=\"Save\" id=\"addConference\"/>


<div class=\"spacer\"></div>
  </g:form>

                <g:hasErrors bean=\"${conferenceInstance}\">
            <div class=\"errors\">
                <g:renderErrors bean=\"${conferenceInstance}\" as=\"list\" />
            </div>
            </g:hasErrors>

</div>
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。