zoukankan      html  css  js  c++  java
  • Play Framework 第一个应用

    熟悉的Hello World

    新创建一个工程,了解下重要文件的结构

    .app

    controllersmodelsviews

    目前比较流行的MVC架构

    .conf

    application.conf   工程配置,包括数据库连接等

    routes       路由配置,用于解析URL

    找到.appviewsapplicationindex.html

    修改页面内容,添加一个输入框和一个按钮

    #{extends 'main.html' /}
    #{set title:'Home' /}
    
    <form action="@{Application.sayHello()}" method="Get">
        <input type="text" name="myName" />
        <input type="submit" value="Say Hello" />
    </form>

    #{extends 'main.html' /}  表示页面继承自 main.html

    #{set title:'Home' /}     设置页面标题

    运行程序,进入页面 localhost:9000, 会提示错误,No route able to invoke action Application.sayHello was found  

    在Application.java中添加sayHello方法

    public static void sayHello(String myName) {
            render(myName);
    }

    添加sayHello页面,在.appviewsapplication 下添加sayHello.html

    #{extends 'main.html' /}
    #{set title:'Home' /}
    
    <h1>Hello ${myName?: 'guest'}!</h1>
    <a href="@{Application.index()}">Back to form</a>

    运行效果如下:

    对URL进行优化 http://localhost:9000/application/sayhello?myName=Alex

    配置路由 .conf outes

    在 * /{controller}/{action} {controller}.{action} 后添加:

    GET     /hello                                    Application.sayHello

    可以使用新的URL访问页面  http://localhost:9000/hello?myName=Alex

    自定义Layout

    Layout是所有页面的公共部分,修改.appviewsmain.html

    <body>
            Hello World APP
            <hr />
            
            #{doLayout /}
    </body>

    #{doLayout /} 会替换sayHello.html中的内容

    添加验证

    修改sayHello方法

    import play.data.validation.Required;
    
    public static void sayHello(@Required String myName) {
            if(validation.hasErrors())
            {
                flash.error("Oops, please enter your name!");
                index();
            }
            render(myName);
    }

    修改index.html,添加以下代码

    #{if flash.error}
        <p style="color:#c00">
            ${flash.error}
        </p>
    #{/if}

    。。

      

  • 相关阅读:
    第八章 Python 对象和类
    第七章 Python 盒子:模块、包和程序
    第六章 Python 函数(二)
    第五章 Python 函数(一)
    VS的32位、64位预处理定义;
    python 3D散点绘图;
    基于生长的棋盘格角点检测算法解读
    C++11: std::function<void()> func;
    有关pyinstaller打包程序后,转到其他电脑报“Failed to excute script"的问题;
    Qt: 监听文件夹QFileSystemWatcher;
  • 原文地址:https://www.cnblogs.com/alex09/p/4914088.html
Copyright © 2011-2022 走看看