保存时,Object Id设置为null - AjaxDependencySelection

时间:2014-06-05 17:13:55

标签: grails

所以我决定为Grails使用AjaxDependencySelection插件,并且它已被证明非常有用。但是,我正在尝试实现autoComplete框,并且在使用自动填充选择时似乎没有保存对象ID。这是我在gsp中的实现

<g:selectPrimary id="template" name="template"
domain='dms.nexusglobal.Template'
searchField='templateName'
collectField='id'

domain2='dms.nexusglobal.Tag'
bindid="template.id"
searchField2='tagName'
collectField2='id'

hidden="hiddenNew"
noSelection="['': 'Please choose Template']" 
setId="tag"
value="${documentPartInstance?.template}"/>

<g:selectSecondary id="tag" name="tag"
domain2='dms.nexusglobal.Subtag'
bindid="tag.id"
searchField2='subtagName'
collectField2='id'

autocomp="1"

noSelection="['': 'Please choose Tag']" 
setId="subtag"
value="${documentPartInstance?.tag}"/>


<g:autoCompleteSecondary id="subtag" name="subtagId"

domain='dms.nexusglobal.Subtag'
primarybind='tag.id'
hidden='tag'
hidden2='hidden5'
searchField='subtagName'
collectField='id'

value='${documentPartInstance?.subtag}'/>

 <input type=hidden id="hidden5" name="subtagId" value="${documentPartInstance?.subtag}"/>

但是,每次保存时,我都会收到此错误Column 'subtag_id' cannot be null。这是我对Subtag

的域类定义
class Subtag {
static scaffold = true

String subtagName
static belongsTo = [tag : Tag]

public Subtag()
{

}

public Subtag(String s)
{
    subtagName = s
}

static constraints = {
}

String toString(){
    subtagName
}
}

标签还有许多子标签

在使用自动选择框时似乎正在创建新的Subtag实例(因为错误显示为Could not find matching constructor for:packagename.Subtag(java.lang.String)虽然这是我希望在以后阶段在我的应用程序中实现的功能(能够创建新的创建文档时动态子标签(部分),现在,我希望能够做的只是从我现有的子标签中选择。

当我添加一个字符串构造函数时,它返回错误Column subtag_id cannot be null

1 个答案:

答案 0 :(得分:0)

我已经开发了它,所以会尽力帮助解决你的问题。

问题是你试图从selectSecondary推送一个值并更新g:autocomplete的elementId,它实际上是一个单独的实体。

我将使用新方法更新插件,需要先测试它。另外看一下g:selectAutoComplete。虽然这种方法只有在你的次要任务是主要任务时才有效......所以在这种情况下也不好......

坚持并留意0.37版本

发布了有关如何在此处执行此类操作的0.37文档:https://github.com/vahidhedayati/ajaxdependancyselection/wiki/from-selection-to-autocomplete---how-to