'рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб' рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ - рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рдкреНрд▓реЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рднрд╛рдЧ 2)

рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рддрд╣реА рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ 'рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб' рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд▓реЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдкреЗрд╢ рдХрд░реЗрдЧрд╛ред



(рднрд╛рдЧ 1)



рд░реВрдк рд░рдЪрдирд╛



рдЖрдЗрдП рдПрдХ рдлреЙрд░реНрдо рдмрдирд╛рдХрд░ рд╣рдорд╛рд░рд╛ 'рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб' рдПрдкреНрд▓реАрдХреЗрд╢рди рд╢реБрд░реВ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЖрдк рдПрдХ рдирд╛рдо рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдЗрд╕ рддрд░рд╣ рд╕реЗ helloworld / app / views / Application / index.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>
      
      







рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @ {...} рд╕рдВрдХреЗрддрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ Play рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ Application.sayHello рдкрд░ рдПрдХ URL рдмрдирд╛рддрд╛ рд╣реИред рдЕрдм, рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣реЛрдордкреЗрдЬ рдХреЛ рд░рд┐рдлреНрд░реЗрд╢ рдХрд░реЗрдВред







рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЖрдкрдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреАред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдПрдХ nonexistent Application.sayHello рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗ рд░рд╣реЗ рд╣реИрдВред рдЖрдЗрдП рдЗрд╕реЗ helloworld / app / рдирд┐рдпрдВрддреНрд░рдХреЛрдВ / Application.java рдореЗрдВ рдмрдирд╛рдПрдВ:



 package controllers; import play.mvc.*; public class Application extends Controller { public static void index() { render(); } public static void sayHello(String myName) { render(myName); } }
      
      







рд╣рдордиреЗ SayHello рдкрджреНрдзрддрд┐ рдореЗрдВ myName рдкреИрд░рд╛рдореАрдЯрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рди myName рдХреЗ рд╕рд╛рде рдкреЙрдкреНрдпреБрд▓реЗрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред рдФрд░ рд╣рдо myName рдХреЛ рджрд┐рдП рдЧрдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЗрдВрдбрд░ () рдлрд╝рдВрдХреНрд╢рди рдХрд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдбрд┐рдЬрд╝рд╛рдЗрди рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред







рдЕрдм, рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ рдирд╛рдо рджрд░реНрдЬ рдХрд░рдиреЗ рдФрд░ рдлреЙрд░реНрдо рдЬрдорд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдФрд░ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреА:







рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рд░рдг рдХреЛ рд╕рдордЭрдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдкреНрд▓реЗ рдЗрд╕ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рдЖрдЗрдП рдЗрд╕реЗ рдмрдирд╛рдПрдВ helloworld / app / views / Application / sayHello.html:



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







рдЕрдм рдкреЗрдЬ рдХреЛ рд░рд┐рдлреНрд░реЗрд╢ рдХрд░реЗрдВред







рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдордиреЗ рдЧреНрд░реВрд╡реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ ?: рдСрдкрд░реЗрдЯрд░ред рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ myName рд╡реИрд░рд┐рдПрдмрд▓ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдПрдХ рдирд╛рдо рджрд░реНрдЬ рдХрд┐рдП рдмрд┐рдирд╛ рдлреЙрд░реНрдо рдЬрдорд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ 'рд╣реИрд▓реЛ рдЧреЗрд╕реНрдЯ' рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред



рд╕реАрдПрдирд╕реА рд╕реЗрдЯрд┐рдВрдЧ



рдпрджрд┐ рдЖрдк рдмрдирд╛рдП рдЧрдП рдкреГрд╖реНрда рдХрд╛ URL рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХреБрдЫ рдРрд╕рд╛ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:



http: // localhost: 9000 / рдПрдкреНрд▓рд┐рдХреЗрд╢рди / Sayhello? myName = guillaume



рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ Play рд╕рднреА рдирд┐рдпрдВрддреНрд░рдХ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:



* /{controller}/{action} {controller}.{action}







рд╣рдо рдХрд╕реНрдЯрдо Application.sayHello рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда URL рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХреЗ рдмрд╛рдж рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП helloworld / conf / рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ:



GET /hello Application.sayHello







рдЕрдм рдлреЙрд░реНрдо рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ рдФрд░ рдЕрдкрдирд╛ рдирд╛рдо рджрд░реНрдЬ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХреЗ рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред



рдЖрдЙрдЯрдкреБрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЕрдиреБрдХреВрд▓рди



рдЪреВрдВрдХрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ main.html рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рднреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдмрджрд▓рд┐рдП helloworld / app / views / main.html:



 ... <body> The Hello world app. <hr/> #{doLayout /} </body> ...
      
      







рд▓рд╛рдЗрди "рд╣реИрд▓реЛ рджреБрдирд┐рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рдиред" рд╕рднреА рдкреГрд╖реНрдареЛрдВ рдкрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред







рдЗрдирдкреБрдЯ рд╕рддреНрдпрд╛рдкрди



рдкреНрд░рдкрддреНрд░ рдореЗрдВ рдПрдХ рдЪреЗрдХ рдЬреЛрдбрд╝реЗрдВред рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдлреЙрд░реНрдо рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо Play рд╕рддреНрдпрд╛рдкрди рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд░рд┐рд╡рд░реНрддрдирд╣реЗрд▓реЛ рдХреЛ рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб / рдПрдк / рдХрдВрдЯреНрд░реЛрд▓рд░ / рдПрдкреНрд▓рд┐рдХреЗрд╢рди.рдЬрд╛рд╡ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрджрд▓реЗрдВ:



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







Play.data.validation рдХреЛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдпрд╛рдж рд░рдЦреЗрдВред * @ рдЕрд╕рдорд╛рди рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдкреНрд▓реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬрд╛рдБрдЪ рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ myName рдлрд╝реАрд▓реНрдб рднрд░рд╛ рд╣реИ рдпрд╛ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рд╡рд╛рд▓реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЬреЛрдбрд╝реЗрдВред рдлрд┐рд░, рдпрджрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реИ, рддреЛ рд╣рдо рдПрдХ рд╕рдВрджреЗрд╢ рдЬреЛрдбрд╝реЗрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ рд╕рд╛рдЗрдЯ рдХреЗ рд░реВрдЯ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗред



рдХрд┐рд╕реА рдкреГрд╖реНрда рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдкрд░ рдлрд╝реНрд▓реИрд╢ рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрдкрдХреЛ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред



рдЕрдм рдЖрдкрдХреЛ рдмрд╕ рдПрд░рд░ рдореИрд╕реЗрдЬ рджрд┐рдЦрд╛рдирд╛ рд╣реИ, рдпрджрд┐ рдХреЛрдИ рд╣реИ рддреЛред рдмрджрд▓рд┐рдП helloworld / app / views / Application / index.html:



 #{extends 'main.html' /} #{set title:'Home' /} #{if flash.error} <p style="color:#c00"> ${flash.error} </p> #{/if} <form action="@{Application.sayHello()}" method="GET"> <input type="text" name="myName" /> <input type="submit" value="Say hello!" /> </form>
      
      







рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:







рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг



рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдХрд░ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЦрддреНрдо рдХрд░рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдХреЛрдб рдореЗрдВ рдХреЛрдИ рддрд░реНрдХ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреЗрдВрдЧреЗред



рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЯреЗрд╕реНрдЯ рдореЛрдб рдореЗрдВ рдЪрд▓рд╛рдПрдВред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд░реЛрдХреЗрдВ рдФрд░ рдЗрд╕реЗ рдХрдорд╛рдВрдб рд╕реЗ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ:



$ play test







рдкреНрд▓реЗ рдЯреЗрд╕реНрдЯ рдХрдорд╛рдВрдб рдкреНрд▓реЗ рд░рди рдХреЗ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЯреЗрд╕реНрдЯ рд░рдирд░ рдореЙрдбреНрдпреВрд▓ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рд╕реАрдзреЗ рдЯреЗрд╕реНрдЯ рд╕реВрдЯ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред



рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдирд┐рдореНрди рдкрддрд╛ рдЦреЛрд▓реЗрдВ http: // localhost: 9000 / @ рдкрд░реАрдХреНрд╖рдг рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред рд╕рднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, рд╕рдм рдХреБрдЫ рд╣рд░рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ... рд▓реЗрдХрд┐рди рдпреЗ рдорд╛рдирдХ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ, рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред







рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреЗ рд▓рд┐рдП рдЯреЗрд╕реНрдЯ рдЖрдорддреМрд░ рдкрд░ рдПрдХ HTML рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВред рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдереЛрдбрд╝рд╛ рдердХрд╛рдК рд╣реИ (HTML рддрд╛рд▓рд┐рдХрд╛ рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рд░реВрдкрдг)ред рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд▓реЗ рдЖрдкрдХреЛ рдкреНрд▓реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛, рдЬреЛ рд╕реЗрд▓реЗрдирд┐рдпрдо рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓реАрдХреГрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред



рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╕рдордп, рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреЗ рдкрд░реАрдХреНрд╖рдг рд╕рд╣рд┐рдд рдкреНрд▓реЗ рдиреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдПред рдУрдкрди рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб / рдЯреЗрд╕реНрдЯ / Application.test.html:

 *{ You can use plain selenium command using the selenium tag }* #{selenium} // Open the home page, and check that no error occurred open('/') assertNotTitle('Application error') #{/selenium}
      
      







рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд╣ рдмрд╕ рдореБрдЦреНрдп рдкреГрд╖реНрда рдЦреЛрд▓рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреГрд╖реНрдареЛрдВ рдореЗрдВ рдкрд╛рда 'рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддреНрд░реБрдЯрд┐' рдирд╣реАрдВ рд╣реИред



рд╣рдо рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рд╛ рд▓рд┐рдЦреЗрдВрдЧреЗред рдкрд░реАрдХреНрд╖рдг рдХреА рд╕рд╛рдордЧреНрд░реА рдмрджрд▓реЗрдВ:



 #{selenium} //     ,       open('/') assertNotTitle('Application error') //     assertTextPresent('The Hello world app.') //   clickAndWait('css=input[type=submit]') //     assertTextPresent('Oops, please enter your name!') //      type('css=input[type=text]', 'bob') clickAndWait('css=input[type=submit]') //   assertTextPresent('Hello bob!') assertTextPresent('The Hello world app.') //    clickAndWait('link=Back to form') //  ? assertTextNotPresent('Hello bob!') #{/selenium}
      
      







рд╣рдордиреЗ рдЖрд╡реЗрджрдиреЛрдВ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИред рдмрд╕ рдЯреЗрд╕реНрдЯ рд░рдирд░ рдореЗрдВ рдЗрд╕ рдкрд░реАрдХреНрд╖рд╛ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ "рдкреНрд░рд╛рд░рдВрдн" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рд╕рдм рдХреБрдЫ рд╣рд░рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП!







рдФрд░ рдЪрд╛рд╣рд┐рдП?



рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдкрд╛рда рдерд╛ред рдпрджрд┐ рдЖрдк Play рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ "рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ - рдкреНрд▓реЗ рдЧрд╛рдЗрдб, рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд░рдг-рджрд░-рдЪрд░рдг" рдкрдврд╝реЗрдВред



All Articles