Grails整合Spring Web Flow

Grails Version: 2.5.0

Spring Web Flow: 2.1.0

step 1  File->New->Project->Grails

    

step 2  添加Web Flow依赖

step 3 新建domain类

 grails-app -> domain -> New -> Grails Domain Class

 User.groovy的代码如下:

class User {

    String username
    String password

    static constraints = {
    }
}

 

step 4  创建controller和views

step 5  修改UserController.groovy的内容

class  UserController {
    def index  =  { redirect(action:list,params:params) }

    //  the delete, save and update actions only accept POST requests
    def allowedMethods  =  [delete: ' POST ' , save: ' POST ' , update: ' POST ' ]

    def list  =  {
        if ( !params.max)params.max  =   10
        [ userList: User.list( params ) ]
    }

    def show  =  {
        [ user : User.get( params.id ) ]
    }

    def delete  =  {
        def user  =  User.get( params.id )
        if (user) {
            user.delete()
            flash.message  =   "User ${params.id} deleted."
            redirect(action:list)
        }
        else  {
            flash.message  =   "User not found with id ${params.id}"
            redirect(action:list)
        }
    }

    def edit  =  {
        def user  =  User.get( params.id )

        if ( ! user) {
            flash.message  =   "User not found with id ${params.id}"
            redirect(action:list)
        }
        else  {
            return  [ user : user ]
        }
    }

    def update  =  {
        def user  =  User.get( params.id )
        if (user) {
            user.properties  =  params
            if (user.save()) {
                flash.message  =   "User ${params.id} updated."
                redirect(action:show,id:user.id)
            }
            else  {
                render(view: 'edit' ,model:[user:user])
            }
        }
        else  {
            flash.message  =   "User not found with id ${params.id}"
            redirect(action:edit,id:params.id)
        }
    }

    def create  =  {
        def user  =   new  User()
        user.properties  =  params
        return  [ 'user' :user]
    }

    def save  =  {
        def user  =   new  User()
        user.properties  =  params
        if (user.save()) {
            flash.message  =   "User ${user.id} created."
            redirect(action:show,id:user.id)
        }
        else  {
            render(view: 'create' ,model:[user:user])
        }
    }

    def loginSystemFlow  =  {//on("login"){...}.to "ok"表示点击login按钮后所要去的页面为ok
        login {
            on( "login" ) {
                if  ( "wyd" !=  params.username  ||   "123"   !=  params.password) {
                    flash.message  =   "username or password is invalid"

                    def user = new User()
                    user.properties = params
                    flash.user = user

                    return error ()
                } else {
                    // 仅仅用来演示如何使用flow scope
                    flow.message = "Welcome, ${params.username}"
                }
            }.to "ok"
            on("register").to "showRegisterView"
        }

        ok()

        showRegisterView()
    }
}

 

step 6

在grails-app\views\user\目录下新建一个名为“loginSystem”的子目录,该名称为UserController.groovy中的loginSystemFlow的“loginSystem”相对应。 

step 7

在grails-app\views\user\loginSystem\目录下新建login.gspok.gspshowRegisterView.gsp三个GSP文件(这三个文件的文件名与
    def loginSystemFlow = {
        login {
            ...

        }
        
        ok()
        
        showRegisterView()
    }

中粗体突显的state名相对应,其中login为start state,而ok和showRegisterView为end state

login.gsp

<html>
     <head>
         <meta  http-equiv ="Content-Type"  content ="text/html; charset=UTF-8"/>
         <meta  name ="layout"  content ="main" />
         <title> Login Page </title>
     </head>
     <body>
         <div  class ="nav" >
             <span  class ="menuButton" ><a class ="home" href ="${createLinkTo(dir:'')}" > Home </a>
             </span>
         </div>
         <div  class ="body">
             <h1>
                Login Page
             </h1>
             <g:if  test ="${message }">
                 <div  class ="message">
                    ${message }
                 </div>
             </g:if>
             <g:form  action ="loginSystem"  method ="post">
                <div  class ="dialog">
                    <table>
                        <tbody>
                           <tr  class ='prop'>
                                <td valign ='top'  class ='name'>
                                    <label for ='username'>
                                       Username:
                                    </label>
                                </td >
                                <td  valign ='top'  class ='value  ${hasErrors(bean:user,field:'username','errors')}'>
                                                   <input  type ="text"  id ='username'  name ='username'
                                                         value ="${user?.username?.encodeAsHTML()}"  />
                                </td>
                            </tr>
                            <tr  class ='prop'>
                                 <td  valign ='top'  class ='name'>
                                     <label  for ='password'>
                                        Password:
                                     </label>
                                 </td>
                                 <td  valign ='top'  class ='value  ${hasErrors(bean:user,field:'password','errors')}'>
                                     <input  type ="text"  id ='password'  name ='password'
                                         value ="${user?.password?.encodeAsHTML()}" />
                                 </td>
                             </tr>
                         </tbody>
                     </table>
                 </div>
                 <div  class ="buttons">
                     <span  class ="button" ><g:submitButton  class ="save" name ="login"  value ="Login" ></g:submitButton>
                     </span>
                 </div>
                 <g:link  action ="loginSystem"  event ="register"> Register </g:link>
             </g:form>
         </div>
     </body>
</html>

 

ok.gsp

${message } < br  />

<g:link  action ="loginSystem"> back to login page </g:link>

showRegisterView.gsp 

This is a register page  < br />
<g:link  action ="loginSystem" > back to login page </g:link >

step 8

运行项目

浏览器访问:http://localhost:8080/login/user/loginSystem

源码下载地址:https://github.com/wenyiyi/Grails-WebFlow

 

(参考自:http://www.blogjava.net/BlueSUN/archive/2007/09/08/143544.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值