Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //PostgreSQL:
- CREATE DATABASE mydb
- WITH OWNER = postgres
- ENCODING = 'UTF8'
- TABLESPACE = pg_default
- LC_COLLATE = 'ru_RU.UTF-8'
- LC_CTYPE = 'ru_RU.UTF-8'
- CONNECTION LIMIT = -1;
- CREATE TABLE states
- (
- id serial NOT NULL,
- "name" character varying(30) NOT NULL,
- CONSTRAINT states_pkey PRIMARY KEY (id)
- )
- WITH (
- OIDS=FALSE
- );
- INSERT INTO states("name") VALUES('Colorado');
- INSERT INTO states("name") VALUES('California');
- INSERT INTO states("name") VALUES('Alabama');
- INSERT INTO states("name") VALUES('Alaska');
- //Grails 1.3.7:
- package myapplication
- import groovy.sql.Sql
- import grails.converters.*
- class AutocompleteController {
- def index = { }
- def test = {
- String name=params.name
- def states = []
- if(name.endsWith("*")){
- name=name.substring(0,name.length()-1)
- def conn = Sql.newInstance("jdbc:postgresql://localhost:5432/mydb","postgres","password","org.postgresql.Driver")
- def results =conn.rows("SELECT id, name FROM states WHERE name ILIKE '"+name+"%'")
- results.each(){
- states.add(id:it.id,name:it.name)
- }
- }
- render(contentType: "text/json") {
- states
- }
- }
- }
- //index.gsp
- <%@ page contentType="text/html;charset=UTF-8" %>
- <html>
- <head>
- <title>Autocomplete</title>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <script type="text/javascript" src="js/dojo/dojo.js" djConfig="parseOnLoad:true, isDebug:false"></script>
- <style type="text/css">
- @import "js/dojo/resources/dojo.css";
- @import "js/dijit/themes/tundra/tundra.css";
- </style>
- <script type="text/javascript">
- dojo.require("dijit.form.Form");
- dojo.require("dijit.form.Button");
- dojo.require("dijit.form.ValidationTextBox");
- dojo.require("dijit.form.FilteringSelect");
- dojo.require("dojox.data.JsonRestStore");
- </script>
- </head>
- <body class="tundra">
- <div dojoType="dijit.form.Form" id="myForm" data-dojo-id="myForm" encType="multipart/form-data" action="" method="">
- <table style="border: 1px solid #9f9f9f;" cellspacing="10">
- <tr>
- <td>
- <label for="name">
- Test:
- </td>
- <td>
- <input type="text" id="name" name="name" required="true" dojoType="dijit.form.ValidationTextBox"/>
- </td>
- </tr>
- <tr>
- <td>
- <label for="state">
- State:
- </td>
- <td>
- <input id="stateSelect">
- </td>
- </tr>
- </table>
- <button dojoType="dijit.form.Button" type="reset">
- Reset
- </button>
- </div>
- </body>
- <script type="text/javascript">
- dojo.addOnLoad(function() {
- var stateStore = new dojox.data.JsonRestStore({target:"<g:createLink controller="autocomplete" action="test"/>"});
- new dijit.form.FilteringSelect({
- id: "stateSelect",
- name: "state",
- store: stateStore,
- searchAttr: "name"
- },
- "stateSelect");
- });
- </script>
- </html>
Add Comment
Please, Sign In to add comment