Grails缓存问题与show.gsp中的表单(视图)

时间:2013-12-05 00:09:52

标签: forms caching grails view resources

我有这个非常奇怪的问题,我已经选择了我的代码,并取消了我认为会导致这种情况的任何缓存更改,但它仍然存在。

以下是发生的事情:

  1. 我在我的应用程序中添加了一个名为“q”的地址,我将其保存并获取id为1 示例
  2. 如果我添加另一个地址名称“q”(q不限于唯一),那么保存它我得到id 2。
  3. 如果我重复2,我会得到一个ID为3的新项目。
  4. 这是奇怪的部分,如果我将鼠标放在编辑按钮2或3上它有一个链接1.如果我查看生成的HTML,我会得到表格的这一部分:

    <form action="/CRM/address/delete/1" method="post" ><input type="hidden" name="_method" value="DELETE" id="_method" />
        <fieldset class="buttons">
            <a href="/CRM/address/edit/1" class="edit">Edit</a>
            <input type="submit" name="_action_delete" value="Delete" class="delete" onclick="return confirm(&#39;Are you sure?&#39;);" />
        </fieldset>
    </form>
    

    如果我查看show.gsp,它只是生成的脚手架的基本代码:

    <g:form url="[resource:addressInstance, action:'delete']" method="DELETE">
        <fieldset class="buttons">
            <g:link class="edit" action="edit" resource="${addressInstance}"><g:message code="default.button.edit.label" default="Edit" /></g:link>
            <g:actionSubmit class="delete" action="delete" value="${message(code: 'default.button.delete.label', default: 'Delete')}" onclick="return confirm('${message(code: 'default.button.delete.confirm.message', default: 'Are you sure?')}');" />
        </fieldset>
    </g:form> 
    

    控制器具有以下操作:

    def show(Address addressInstance) {
        respond addressInstance
    }
    

    当我打印addressInstance时,它看起来是正确的。

    有没有人知道为什么我会在地址2和3的显示屏幕上显示ID 1而不是正确的ID?

    我在H2和PostgreSQL,Grails 2.3.3,本地和Heroku上测试过它。

1 个答案:

答案 0 :(得分:0)

在Grails 2.3.0-2.3.4中看起来像一个bug linkGenerator缓存。

我创建了一个Jira:http://jira.grails.org/browse/GRAILS-10883

您可以在配置文件中禁用缓存: grails.web.linkGenerator.useCache = false