<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://wiki.chongtin.com/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://wiki.chongtin.com/feed.php">
        <title>Tutorial Site grails</title>
        <description></description>
        <link>https://wiki.chongtin.com/</link>
        <image rdf:resource="https://wiki.chongtin.com/ttps://wiki.chongtin.com/lib/tpl/bootstrap3/images/favicon.ico" />
       <dc:date>2026-04-09T00:04:22+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://wiki.chongtin.com/grails/adding_customized_authentication_for_spring_security_plugin?do=revisions&amp;rev=1563521831"/>
                <rdf:li rdf:resource="https://wiki.chongtin.com/grails/adding_spring_security_plugin?do=revisions&amp;rev=1539137632"/>
                <rdf:li rdf:resource="https://wiki.chongtin.com/grails/controller?do=revisions&amp;rev=1539591957"/>
                <rdf:li rdf:resource="https://wiki.chongtin.com/grails/data_source?do=revisions&amp;rev=1577413129"/>
                <rdf:li rdf:resource="https://wiki.chongtin.com/grails/domain?do=revisions&amp;rev=1539921182"/>
                <rdf:li rdf:resource="https://wiki.chongtin.com/grails/goodies?do=revisions&amp;rev=1539935423"/>
                <rdf:li rdf:resource="https://wiki.chongtin.com/grails/grails_3_project_directories?do=revisions&amp;rev=1539918843"/>
                <rdf:li rdf:resource="https://wiki.chongtin.com/grails/interceptor?do=revisions&amp;rev=1571368824"/>
                <rdf:li rdf:resource="https://wiki.chongtin.com/grails/mastering_domain.createcriteria?do=revisions&amp;rev=1598864110"/>
                <rdf:li rdf:resource="https://wiki.chongtin.com/grails/mastering_gorm_dynamic_finders?do=revisions&amp;rev=1539918843"/>
                <rdf:li rdf:resource="https://wiki.chongtin.com/grails/multiple_data_sources?do=revisions&amp;rev=1577410564"/>
                <rdf:li rdf:resource="https://wiki.chongtin.com/grails/quartz_-_job_scheduler?do=revisions&amp;rev=1539231541"/>
                <rdf:li rdf:resource="https://wiki.chongtin.com/grails/reading_csv_files?do=revisions&amp;rev=1539137632"/>
                <rdf:li rdf:resource="https://wiki.chongtin.com/grails/rest_client_with_json?do=revisions&amp;rev=1573719444"/>
                <rdf:li rdf:resource="https://wiki.chongtin.com/grails/setup_grails_3_behind_proxy?do=revisions&amp;rev=1539137631"/>
                <rdf:li rdf:resource="https://wiki.chongtin.com/grails/setup_grails_3_development_environment?do=revisions&amp;rev=1539137517"/>
                <rdf:li rdf:resource="https://wiki.chongtin.com/grails/spring_security_login_redirection?do=revisions&amp;rev=1568080598"/>
                <rdf:li rdf:resource="https://wiki.chongtin.com/grails/url_mappings?do=revisions&amp;rev=1574387009"/>
                <rdf:li rdf:resource="https://wiki.chongtin.com/grails/using_console_to_create_and_build_a_project?do=revisions&amp;rev=1539137631"/>
                <rdf:li rdf:resource="https://wiki.chongtin.com/grails/using_intellij_idea_ultimate_ide?do=revisions&amp;rev=1539137632"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://wiki.chongtin.com/ttps://wiki.chongtin.com/lib/tpl/bootstrap3/images/favicon.ico">
        <title>Tutorial Site</title>
        <link>https://wiki.chongtin.com/</link>
        <url>https://wiki.chongtin.com/ttps://wiki.chongtin.com/lib/tpl/bootstrap3/images/favicon.ico</url>
    </image>
    <item rdf:about="https://wiki.chongtin.com/grails/adding_customized_authentication_for_spring_security_plugin?do=revisions&amp;rev=1563521831">
        <dc:format>text/html</dc:format>
        <dc:date>2019-07-19T15:37:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Adding Customized Authentication for Spring Security Plugin</title>
        <link>https://wiki.chongtin.com/grails/adding_customized_authentication_for_spring_security_plugin?do=revisions&amp;rev=1563521831</link>
        <description>Adding Customized Authentication for Spring Security Plugin

This is an advance topic, we will try to make thing as simple as possible. You need to first add the spring security plugin to your app first. If not do it like this. If you do not fully understand why you need this, you should go back.</description>
    </item>
    <item rdf:about="https://wiki.chongtin.com/grails/adding_spring_security_plugin?do=revisions&amp;rev=1539137632">
        <dc:format>text/html</dc:format>
        <dc:date>2018-10-10T10:13:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Adding Spring Security Plugin</title>
        <link>https://wiki.chongtin.com/grails/adding_spring_security_plugin?do=revisions&amp;rev=1539137632</link>
        <description>Adding Spring Security Plugin

Spring security plugin allows your app to authenticate your user, and blocking them from access the functions your they do not have access right.

Setup

	*  Add the following in build.gradle dependencies section 
compile 'org.grails.plugins:spring-security-core:3.2.3'</description>
    </item>
    <item rdf:about="https://wiki.chongtin.com/grails/controller?do=revisions&amp;rev=1539591957">
        <dc:format>text/html</dc:format>
        <dc:date>2018-10-15T16:25:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Controller</title>
        <link>https://wiki.chongtin.com/grails/controller?do=revisions&amp;rev=1539591957</link>
        <description>Controller

Grails controller mainly handle the HTTP request. It also automatically map a URL to its method. The controller class must located at /grails-app/controllers/ directory.

Creating a Controller

Grails Console: Type the following code with your own controller name, and a controller with your app package will be created.</description>
    </item>
    <item rdf:about="https://wiki.chongtin.com/grails/data_source?do=revisions&amp;rev=1577413129">
        <dc:format>text/html</dc:format>
        <dc:date>2019-12-27T10:18:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Data Source</title>
        <link>https://wiki.chongtin.com/grails/data_source?do=revisions&amp;rev=1577413129</link>
        <description>Data Source

Data source can be setup in application.yml. You need to fill in 3 environments, and they are production, test, and development. Here is an example of it. You need to fill in your own * below.

For MS SQL Server

Assume using MS SQL Server 2012.</description>
    </item>
    <item rdf:about="https://wiki.chongtin.com/grails/domain?do=revisions&amp;rev=1539921182">
        <dc:format>text/html</dc:format>
        <dc:date>2018-10-19T11:53:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Domain</title>
        <link>https://wiki.chongtin.com/grails/domain?do=revisions&amp;rev=1539921182</link>
        <description>Domain

In Grails or Spring, Domain is an plain old Java object (POJO) that do the mapping between your app, and the database. In Grails by conversion, we put the domain objects under the directory /grails-ap/domain/YOUR_PACKAGE_NAME/, and Grails will do the rest for us.</description>
    </item>
    <item rdf:about="https://wiki.chongtin.com/grails/goodies?do=revisions&amp;rev=1539935423">
        <dc:format>text/html</dc:format>
        <dc:date>2018-10-19T15:50:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>List Out All Request Header</title>
        <link>https://wiki.chongtin.com/grails/goodies?do=revisions&amp;rev=1539935423</link>
        <description>List Out All Request Header


//in a controller
def showAllHeaders(){
    StringBuilder sb = new StringBuilder()
    request.headerNames.each{
        sb.append(it).append(&quot;: &quot;).append(request.getHeader(it))
        .append(&quot;&lt;br&gt;&quot;)
    }
    render(sb.toString())
}</description>
    </item>
    <item rdf:about="https://wiki.chongtin.com/grails/grails_3_project_directories?do=revisions&amp;rev=1539918843">
        <dc:format>text/html</dc:format>
        <dc:date>2018-10-19T11:14:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Grails 3 Project Directories</title>
        <link>https://wiki.chongtin.com/grails/grails_3_project_directories?do=revisions&amp;rev=1539918843</link>
        <description>Grails 3 Project Directories


The image on the left shows the structure of a Grails 3 project. We will talk about those interesting ones here.

build.gradle

This is not a directory, but it is import for defining dependencies for your web-app.

assets</description>
    </item>
    <item rdf:about="https://wiki.chongtin.com/grails/interceptor?do=revisions&amp;rev=1571368824">
        <dc:format>text/html</dc:format>
        <dc:date>2019-10-18T11:20:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Interceptor</title>
        <link>https://wiki.chongtin.com/grails/interceptor?do=revisions&amp;rev=1571368824</link>
        <description>Interceptor

In Grails, interceptor use the concept of Aspect Oriented Programming (AOP) to intercept the programming logic before or after a controller method. Here we will create an ApiInterceptor which will intercept all the method in a controller</description>
    </item>
    <item rdf:about="https://wiki.chongtin.com/grails/mastering_domain.createcriteria?do=revisions&amp;rev=1598864110">
        <dc:format>text/html</dc:format>
        <dc:date>2020-08-31T16:55:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>mastering_Domain.createCriteria()</title>
        <link>https://wiki.chongtin.com/grails/mastering_domain.createcriteria?do=revisions&amp;rev=1598864110</link>
        <description>mastering_Domain.createCriteria()

We usually put createCriteria() within a Grails services. In Grails, createCriteria() come with any domain object, and it return a type BuildableCriteria. Most often, we call its list() method to return a list of that domain object. Here is a code copy from the Grails document site:</description>
    </item>
    <item rdf:about="https://wiki.chongtin.com/grails/mastering_gorm_dynamic_finders?do=revisions&amp;rev=1539918843">
        <dc:format>text/html</dc:format>
        <dc:date>2018-10-19T11:14:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Mastering GORM Dynamic Finders</title>
        <link>https://wiki.chongtin.com/grails/mastering_gorm_dynamic_finders?do=revisions&amp;rev=1539918843</link>
        <description>Mastering GORM Dynamic Finders

TODO!</description>
    </item>
    <item rdf:about="https://wiki.chongtin.com/grails/multiple_data_sources?do=revisions&amp;rev=1577410564">
        <dc:format>text/html</dc:format>
        <dc:date>2019-12-27T09:36:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Multiple Data Sources</title>
        <link>https://wiki.chongtin.com/grails/multiple_data_sources?do=revisions&amp;rev=1577410564</link>
        <description>Multiple Data Sources

You need to use one more layer called dataSources &lt;--- with s in your application.yml file.

Example (For Application.YML)

Assume using MS SQL Server 2012. You need to replace *  with your own data. In this example, we have the default</description>
    </item>
    <item rdf:about="https://wiki.chongtin.com/grails/quartz_-_job_scheduler?do=revisions&amp;rev=1539231541">
        <dc:format>text/html</dc:format>
        <dc:date>2018-10-11T12:19:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Quartz - Job Scheduler</title>
        <link>https://wiki.chongtin.com/grails/quartz_-_job_scheduler?do=revisions&amp;rev=1539231541</link>
        <description>Quartz - Job Scheduler

Quartz is a job schedule plugin for Grails, sort of like a plugin for cron job. To use it:

	*  Add dependency in build.gradle
	*  Add autoStartup: true in application.yml under section quartz:
	*  In grails console, user create-job</description>
    </item>
    <item rdf:about="https://wiki.chongtin.com/grails/reading_csv_files?do=revisions&amp;rev=1539137632">
        <dc:format>text/html</dc:format>
        <dc:date>2018-10-10T10:13:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Reading CSV Files</title>
        <link>https://wiki.chongtin.com/grails/reading_csv_files?do=revisions&amp;rev=1539137632</link>
        <description>Reading CSV Files

	*  Adding Apache commons csv library as dependencies
	*  Putting your csv file in the project
	*  Read the CSV file in your code

Adding apache commons text library as dependencies

Put the following in your build.gradle dependencies{} section. The current version of commons cvs is 1.6. You might want to use a newer version upon its release.</description>
    </item>
    <item rdf:about="https://wiki.chongtin.com/grails/rest_client_with_json?do=revisions&amp;rev=1573719444">
        <dc:format>text/html</dc:format>
        <dc:date>2019-11-14T16:17:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>HTTP Rest Client with JSON</title>
        <link>https://wiki.chongtin.com/grails/rest_client_with_json?do=revisions&amp;rev=1573719444</link>
        <description>HTTP Rest Client with JSON

We can do a HTTP rest request to a server in Grails. Here is how.

Add Rest Client Dependencies in build.gradle

In order to use rest client, first add the following in the build.gradle


compile &quot;org.grails:grails-datastore-rest-client&quot;</description>
    </item>
    <item rdf:about="https://wiki.chongtin.com/grails/setup_grails_3_behind_proxy?do=revisions&amp;rev=1539137631">
        <dc:format>text/html</dc:format>
        <dc:date>2018-10-10T10:13:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Setup Grails 3 Behind Proxy</title>
        <link>https://wiki.chongtin.com/grails/setup_grails_3_behind_proxy?do=revisions&amp;rev=1539137631</link>
        <description>Setup Grails 3 Behind Proxy

Most companies have set up proxy to protect, and speed up their network, but grails, and gradle would not download the libraries needed correctly behind the proxy without proper setup.

Proxy Setting for Grails

	*  Go to the path you install grails.</description>
    </item>
    <item rdf:about="https://wiki.chongtin.com/grails/setup_grails_3_development_environment?do=revisions&amp;rev=1539137517">
        <dc:format>text/html</dc:format>
        <dc:date>2018-10-10T10:11:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Setup Grails 3 Development Environment</title>
        <link>https://wiki.chongtin.com/grails/setup_grails_3_development_environment?do=revisions&amp;rev=1539137517</link>
        <description>Setup Grails 3 Development Environment

	*  Download the latest version (or any version) from &lt;https://grails.org/&gt;
	*  Upzip it to a known directory, d:\grails-3.3.6, for example.
	*  Download and install the required JDK for your Grails version from Oracle. For example, Grails 3.3.6 requires</description>
    </item>
    <item rdf:about="https://wiki.chongtin.com/grails/spring_security_login_redirection?do=revisions&amp;rev=1568080598">
        <dc:format>text/html</dc:format>
        <dc:date>2019-09-10T09:56:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Spring Security Login Redirection</title>
        <link>https://wiki.chongtin.com/grails/spring_security_login_redirection?do=revisions&amp;rev=1568080598</link>
        <description>Spring Security Login Redirection

The redirection after logged in can be controlled in application.groovy by adding the URL-related properties there. For more details, go see the chapter URL Properties in the Grails Spring Security Core Plugin Documentation.</description>
    </item>
    <item rdf:about="https://wiki.chongtin.com/grails/url_mappings?do=revisions&amp;rev=1574387009">
        <dc:format>text/html</dc:format>
        <dc:date>2019-11-22T09:43:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>URL Mappings</title>
        <link>https://wiki.chongtin.com/grails/url_mappings?do=revisions&amp;rev=1574387009</link>
        <description>URL Mappings

Here will will talk about how to map an URL to our method in our controller with parameter.

UrlMappings.groovy

We add /myController/myMethod/$var1?/$var2?/$var3? in our mapping. This tell Grails when that when the input URL match to this pattern, we should go to</description>
    </item>
    <item rdf:about="https://wiki.chongtin.com/grails/using_console_to_create_and_build_a_project?do=revisions&amp;rev=1539137631">
        <dc:format>text/html</dc:format>
        <dc:date>2018-10-10T10:13:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Using Console to Create and Build a Project</title>
        <link>https://wiki.chongtin.com/grails/using_console_to_create_and_build_a_project?do=revisions&amp;rev=1539137631</link>
        <description>Using Console to Create and Build a Project

Create a Project

	*  Assume the development environment has been set up correctly. If not go see Setup Grails 3 Development Environment. 
	*  Check to the directory you want to work on. d:\grailsapp for example.

C:\&gt;d:
D:\&gt;cd\grailsapp
D:\grailsapp&gt;</description>
    </item>
    <item rdf:about="https://wiki.chongtin.com/grails/using_intellij_idea_ultimate_ide?do=revisions&amp;rev=1539137632">
        <dc:format>text/html</dc:format>
        <dc:date>2018-10-10T10:13:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Using IntelliJ IDEA Ultimate IDE</title>
        <link>https://wiki.chongtin.com/grails/using_intellij_idea_ultimate_ide?do=revisions&amp;rev=1539137632</link>
        <description>Using IntelliJ IDEA Ultimate IDE

Currently only a few IDE support Grails 3, and they are Netbeans &lt;https://netbeans.org/&gt;, and Intellij IDEA Ultimate Edition &lt;https://www.jetbrains.com/idea/&gt;. Note that the Intellij IDEA Community Edition would still able to build and run Grails 3 code, but the syntax highlight would be missing! For this page, we will focus on IntelliJ IDEA Ultimate.</description>
    </item>
</rdf:RDF>
