grails从autocomplete字段的值中获取id

时间:2013-06-20 10:22:53

标签: grails grails-plugin grails-2.0

我使用的是grails 2.1.0。我的视图页面中有一个自动填充字段。对于自动完成字段,我使用了richui插件。结果显示在框中。现在我想使用该字段的值的id而不是字符串。但我没有得到/设置id。我不知道如何从该字段中获取id。请有人请帮助我。以下是我的源代码:

我的观看页面>>>

    <g:form controller="autocomplete" action="doSomething">
      <richui:autoComplete id="countryName" name="countryName" action="${createLinkTo('dir': 'autocomplete/searchCountry')}" />
    <br/>
    <g:submitButton name="doSomething" />
</g:form>

我的自动完成控制器操作&gt;&gt;&gt;

def searchCountry = { 
    def country = Country.findAllByNameLike("${params.query}%")        
    //Create XML response 
    render(contentType: "text/xml") {
        results() {
            country.each { countries -> 
                result(){
                    name(countries.name) 
                    id(countries.id)
                }
            } 
        } 
    } 
}

我希望使用id&gt;&gt;&gt;

的行动
def doSomething(){
    def val = "Country Id is -- > " + params.countryName
    render val
}

2 个答案:

答案 0 :(得分:1)

嘿我已经解决了这个问题,只需调用一个javascript函数并添加一个隐藏字段。如下:

<richui:autoComplete id="countryName" name="countryName" action="${createLinkTo('dir': 'autocomplete/searchCountry')}" 
                       onItemSelect="callCountry(id)"/>

我的隐藏字段&gt;&gt;&gt;

<g:hiddenField id ="countryId" name ="countryId" value=""/>

头部中的js函数&gt;&gt;&gt;

    <script type="text/javascript">
    function callCountry(countryId){
      document.getElementById('countryId').value = countryId;
  }
</script>

答案 1 :(得分:0)

根据插件文档,您可以访问onItemSelect

中的countries.id(例如id)
<richui:autoComplete id="countryName" name="countryName" 
  action="${createLinkTo('dir': 'autocomplete/searchCountry')}" 
  onItemSelect="document.location.href='${createLinkTo(dir: 'doSomething')}/' + id;" 
/>

如此配置,只要用户从自动填充列表中选择一个项目而不必明确点击提交,就会调用操作(带有id)。