рдПрдХреНрд╕рдЯреА рдЬреЗрдПрд╕ рдФрд░ рдПрдХреНрд╕рдЯреНрд░реАрдо рдЬреАрдбрдмреНрд▓реНрдпреВрдЯреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджреГрд╢реНрдп рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд░реНрд╡реЛрддреНрддрдо рд╕реЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП - рдбрд┐рдЬрд╛рдЗрди рдФрд░ рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрдЧрддрддрд╛, рдФрд░ рд╕реНрдерд┐рд░рддрд╛ рджреЛрдиреЛрдВ рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, GWT рдкрд░ рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╣рд╛рде рдЦреБрдж рд╣реА рдЦреАрдВрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдПрдХреНрд╕рдЯреНрд░реАрдо рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдЪреНрдЫреЗ рдЖрдХрд╛рд░ рдФрд░ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдмрд╛рдК Google рд╡рд┐рдЬреЗрдЯ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХреНрд╕рдЯреАрдбрдмреНрд▓реНрдпреВ GWT рдФрд░ GWT рдХрд╛ рдПрдХреАрдХрд░рдг рдЕрднреА рднреА рдмрд╣реБрдд рд╡рд╛рдВрдЫрд┐рдд рд╣реИ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХреНрд╕рдЯреАрдбрдмреНрд▓реНрдпреВ GWT рдХрд╛ рджреВрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ GWT рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рднреА рд╕рд╛рдзрдиреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рд╣рд┐рдд рд╣рд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдПрдкреАрдЖрдИ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рддреАрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдЬреЛ рдЕрдм рдПрдХ
рдбреЗрд╡рд▓рдкрд░ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ, Sencha рдбреЗрд╡рд▓рдкрд░реНрд╕ GWT рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЧрдП рдкреИрдЯрд░реНрди рдФрд░ рдореБрд╣рд╛рд╡рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдПрдХреНрд╕рдЯ рдЬреЗрдПрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рд╡рд┐рд░рд╛рд╕рдд рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВред рдореБрдЦреНрдп рдЕрдкреЗрдХреНрд╖рд┐рдд рд▓рд╛рдн GWT рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдзрд┐рдХ рд╕рд╣реА рдПрдХреАрдХрд░рдг рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХ рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛрдб: рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд╕реАрдПрд╕рдПрд╕ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЖрд╕реНрдердЧрд┐рдд рдмрд╛рдзреНрдпрдХрд╛рд░реА рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП GWT рд╕рдВрдХрд▓рди рдХреЗ рдЪрд░рдг рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдХреЛрдб рдЯреБрдХрдбрд╝реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ред
рд╡рд┐рдЧреЗрдЯреНрд╕ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ
GWT рд╕реЗ рдЕрдкрдирд╛рдП рдЧрдП рдкреИрдЯрд░реНрди рдореЗрдВ рд╕реЗ рдПрдХ рд╕реВрд░рдд рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рдЬреЗрдЯ, рдЙрд╕рдХреЗ рд▓реЗрдЖрдЙрдЯ, рд╢реИрд▓реА рдФрд░ рддрд░реНрдХ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рдФрд░ рдмрджрд▓реА рднрд╛рдЧреЛрдВ рдореЗрдВ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреЛ рд╡рд┐рдЧреЗрдЯреНрд╕ рдХреА рд╢реИрд▓рд┐рдпреЛрдВ рдФрд░ рд╡рд┐рд╖рдпреЛрдВ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЙрдирдХреЗ рд▓реЗрдЖрдЙрдЯ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрдЯрди рдХреЗ DOM рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд░реВрдк рдореЗрдВ div рдпрд╛ рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣рд╛рдБ рдПрдХ рд╕рд░рд▓ div рдмрдЯрди рдкрд░ рд╕реВрд░рдд рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рдкрд╛рда рдФрд░ рдЖрдЗрдХрди рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:
public interface Appearance { void render(SafeHtmlBuilder sb); void onUpdateText(XElement parent, String text); void onUpdateIcon(XElement parent, Image icon); } public static class DefaultAppearance implements Appearance { public interface Style extends CssResource { String testButton(); String testButtonText(); String testButtonImage(); } public interface Resources extends ClientBundle { @Source("DefaultAppearance.css") Style style(); } public interface Template extends XTemplates { @XTemplate(source = "DefaultAppearance.html") SafeHtml template(Style style); } private final Style style; private final Template template; public DefaultAppearance() { this((Resources) GWT.create(Resources.class)); } public DefaultAppearance(Resources resources) { this.style = resources.style(); this.style.ensureInjected(); this.template = GWT.create(Template.class); } @Override public void onUpdateIcon(XElement parent, Image icon) { XElement element = parent.selectNode("." + style.testButtonImage()); element.removeChildren(); element.appendChild(icon.getElement()); } @Override public void onUpdateText(XElement parent, String text) { parent.selectNode("." + style.testButtonText()).setInnerText(text); } @Override public void render(SafeHtmlBuilder sb) { sb.append(template.template(style)); } }
рдиреЗрд╕реНрдЯреЗрдб рд╕реНрдЯрд╛рдЗрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдШрдЯрдХ рдХреА рдкреНрд░рддрд┐рдкрд╛рджрди рд╢реИрд▓реА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рдмрд╛рд╣рд░реА рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд▓рд┐рдВрдХ рд╣реЛрддрд╛ рд╣реИ DefaultAppearance.css - рдпрд╣ рдХрдиреЗрдХреНрд╢рди рд╕рдВрд╕рд╛рдзрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рддреАрд╕рд░рд╛ рдиреЗрд╕реНрдЯреЗрдб рдЗрдВрдЯрд░рдлрд╝реЗрд╕, рдЯреЗрдореНрдкреНрд▓реЗрдЯ, рдШрдЯрдХ рдХреЗ рд▓реЗрдЖрдЙрдЯ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмрд╛рд╣рд░реА рдлрд╝рд╛рдЗрд▓ DefaultAppearance.html рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред DefaultAppearance рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ, рдЖрдк рд╕рдВрд╕рд╛рдзрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдШрдЯрдХ рдХреА рд╢реИрд▓реА рдпрд╛ рдереАрдо рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕реА рддрд░рд╣ рд╕реЗ, рдЖрдк рдЯреЗрдореНрдкрд▓реЗрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреВрд░реЗ DefaultAppearance рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ - рд╡рд┐рдЬреЗрдЯ рдХреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдпрд╛ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдкреНрд░рдХрдЯрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдирддреАрдЬрддрди, рдПрдХреНрд╕рдЯ рдЬреАрдбрдмреНрд▓реНрдпреВрдЯреА рд╣рдореЗрдВ рддреАрди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреЙрдЗрдВрдЯ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдо рд╡рд┐рдЬреЗрдЯ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдЗрд╕рдХреА рд╕реАрдПрд╕рдПрд╕ рд╢реИрд▓реА, рдПрдЪрдЯреАрдПрдордПрд▓ рдорд╛рд░реНрдХрдЕрдк рдХреЛ рдмрджрд▓рдХрд░, рдпрд╛ рдЙрдкрд╕реНрдерд┐рддрд┐ рд╡рд╕реНрддреБ рдФрд░ рддрдВрддреНрд░ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдпрд╣ рд╡рд┐рдЬреЗрдЯ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЛрдо рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддрд╛ рд╣реИред рдЙрдкрд╕реНрдерд┐рддрд┐ рдкреИрдЯрд░реНрди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдпреЗ рд╕рднреА рдкрд╣рд▓реВ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рдмрдбрд╝реЗ рдХрд░реАрдиреЗ рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВред
рдЬрд╛рд╡рд╛рдмреАрди рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ
рдЕрдВрдд рдореЗрдВ, рдореЙрдбрд▓рдбреЗрдЯрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдкрд╣рд▓реЗ рдХрд┐рд╕реА рднреА рдЬрд╛рд╡рд╛рдмрд┐рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд▓рдкреЗрдЯрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ рддрд╛рдХрд┐ рд╡реЗ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрд╡рд╛ рдХрд░ рд╕рдХреЗрдВред рд╕реНрдЯреЛрд░ рдФрд░ рд▓реЛрдбрд░ рдореЗрдВ, рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЕрдиреБрдмрдВрдз рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╡рд┐рд╢реЗрд╖ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рдм рдЖрд╕реНрдердЧрд┐рдд рдмрд╛рдзреНрдпрдХрд╛рд░реА рдЬрд╛рджреВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╡рд╕реНрддреБ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд╖реЗрддреНрд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб GWT рд╕рдВрдХрд▓рди рдХреЗ рдЪрд░рдг рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред рдЕрдм рддрдХ, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдФрд░ рдмреВрдЯрд▓реЛрдбрд░реНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдП рдПрдкреАрдЖрдИ рдХреЗ рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рдирд╡рд╛рдЪрд╛рд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рджреНрд╡рд╛рд░рд╛ рдирд╡рд╛рдЪрд╛рд░ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдирдпрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ XTemplate рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЗрдВрдЬрди:
interface TemplateTest extends XTemplates { @XTemplate("<div><span>{name}</span></div>") SafeHtml renderCustomer(Customer customer); @XTemplate(source="template.html") SafeHtml renderCustomerExternal(Customer customer); } ... TemplateTest template = GWT.create(TemplateTest.class); SafeHtml html = template.renderCustomer(customer);
рдХрд┐рд╕реА рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╡рд╕реНрддреБ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЕрдм рд╕реАрдзреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдореЗрдВ customer.name рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рдореЗрдЯрд╛-рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА - рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдЪреАрдЬреЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВред рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ, рдЬреИрд╕рд╛ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреЛ XTemplate рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдорд╛рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдпрд╛ рдмрд╛рд╣рд░реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдорд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдЙрд╕реА рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕реНрд░реЛрдд рдлрд╝реАрд▓реНрдб рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╕реБрд░рдХреНрд╖рд┐рдд HTML рд╣реИ - рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдХрд┐ рдкреНрд░рд╛рдкреНрдд SafeHtml рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдкреНрд░реЗрд╖рд┐рдд рдлрд╝реАрд▓реНрдб рдФрд░ рдореВрд▓реНрдпреЛрдВ рдореЗрдВ XSS рд╣рдорд▓реЛрдВ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрд░реЛрддреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред
рдпреВрдмрд┐рдВрджрд░: рдШреЛрд╖рдгрд╛рддреНрдордХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓реЗрдЖрдЙрдЯ
рдПрдХ рдЕрдиреНрдп рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдлрд╝рдВрдХреНрд╢рди GWT 2.0, UiBinder рдХреЗ рд╕рд╛рде рдореМрдЬреВрджрд╛ XML рдорд╛рд░реНрдХрдЕрдк рддрдВрддреНрд░ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдмрд╛рд╣рд░реА рдПрдХреНрд╕рдПрдордПрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдШрдЯрдХреЛрдВ рдХреЗ рд▓реЗрдЖрдЙрдЯ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдпрд╣ рдШреЛрд╖рдгрд╛рддреНрдордХ рдФрд░ рд╕рдВрд░рдЪрд┐рдд рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЬрд╛рд╡рд╛ рдХреЛрдб рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓реЙрдЬрд┐рдХ рд╕реЗ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИред рдЕрдм рддрдХ, UiBinder рдХреЗрд╡рд▓ рдорд╛рдирдХ GWT рд╡рд┐рдЬреЗрдЯреНрд╕ рдФрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдерд╛, рд▓реЗрдХрд┐рди рдЕрдм Ext GWT рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдШрдЯрдХреЛрдВ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдПрдкреАрдЖрдИ рдЕрднреА рддрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдЕрд▓рдЧ рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдЖрдЙрдЯрдбреИрдЯрд╛рдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдХрдард┐рдирд╛рдИ рд╣реИ - рдпреВрдмрд┐рдВрджрд░ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЖрдкрдХреЛ XML рдорд╛рд░реНрдХрдЕрдк рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрд╛рд░реНрд╕рд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдПрдХреНрд╕рдЯреАрдбрдмреНрд▓реНрдпреВ GWT рдФрд░ GWT рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдм GWT рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рдордиреНрд╡рдп рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рд╕рдВрднрд╡ рдмрдирд╛ рджреЗрдЧрд╛ред рдЕрдм рддрдХ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдХрд▓реНрдк рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рд░реВрдЯ рдЯреИрдЧ рдкрдардиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ):
<border:BorderLayoutContainer pixelSize="800, 400"> <border:north layoutData="size:100; margins: 0 0 5 0"> <gxt:ContentPanel /> </border:north> <border:west layoutData="size:150; margins: 0 5 0 0"> <gxt:ContentPanel /> </border:west> <border:center layoutData="0"> <gxt:ContentPanel heading="BorderLayout UiBinder Example" /> </border:center> <border:east layoutData="size:150; margins: 0 0 0 5"> <gxt:ContentPanel /> </border:east> <border:south layoutData="size:100; margins: 5 0 0 0"> <gxt:ContentPanel /> </border:south> </border:BorderLayoutContainer>
рдпрд╣ рджреЗрдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд▓реЗрдЖрдЙрдЯрдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рд╕реАрдПрд╕рдПрд╕ рд╢реИрд▓рд┐рдпреЛрдВ рдХреА рдХреБрдЫ рд╣рдж рддрдХ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИред рдЗрд╕ рддрдВрддреНрд░ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ gxt-uibinder-3.0.0-SNAPSHOT.jar рдФрд░ uibinder-Bridge-2.3.0-SNAPSHOT.jar рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ - GWT рдиреЗ рд▓реЗрдЖрдЙрдЯрдбреИрдЯрд╛ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЕрдЬреНрдЮрд╛рдд рд░реВрдк рд╕реЗ рдмреЙрд░реНрдбрд░рд▓реИрдЯрдбреИрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдиреНрдп рдЫреЛрдЯреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- рдШрдЯрдирд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рддрдВрддреНрд░ GWT рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд - рдХреЛрдИ рд╢реНрд░реЛрддрд╛, рдорд╛рдирдХ рд╣реИрдВрдбрд▓рд░ рдирд╣реАрдВ;
- рдлреНрд▓реИрд╢ рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдХ рдЕрдиреБрд╡рд╛рджрд┐рдд рдЪрд╛рд░реНрдЯ - рд╡рд┐рддрд░рдг рдкреИрдХреЗрдЬ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдПрдХреНрд╕рдЯреНрд░реАрдо GWT рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЙрджрд╛рд╣рд░рдг, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдЕрдкрдиреА рдЪрд┐рдХрдирд╛рдИ рдФрд░ рдЧрддрд┐ рдХреЗ рд╕рд╛рде рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ;
- рдХрдВрдЯреЗрдирд░реЛрдВ рдФрд░ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдХреБрдЫ рд╕рд░рд▓реАрдХрд░рдг - LayoutContainer рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдЕрдм рд▓реЗрдЖрдЙрдЯ рд▓реЗрдЖрдЙрдЯ (RowLayoutContainer, BorderLayoutContainer, рдЖрджрд┐) рдХреЗ рд╕рд╛рде рдХрд╕рдХрд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХреБрдЫ рд╣рдж рддрдХ рдЙрдирдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ, рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдПрдХреНрд╕рдЯ рдЬреАрдбрдмреНрд▓реНрдпреВрдЯреА 3.0 рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдЬреАрдбрдмреНрд▓реНрдпреВрдЯреА 2.3.0 рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рдлрд▓ рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рдЬрд╛рд╡рд╛ 1.6 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдХрд┐ рд╕реНрд╡рдпрдВ рдЬреАрдбрдмреНрд▓реНрдпреВрдЯреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рднреА рд╣реИред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рд░реВрдЯ рдкреИрдХреЗрдЬ рднреА рдмрджрд▓ рдЧрдпрд╛ рд╣реИ - com.extjs рдХреА рд╣рд╛рд▓рд┐рдпрд╛ рд░реАрдмреНрд░рд╛рдВрдбрд┐рдВрдЧ рдХреА рднрд╛рд╡рдирд╛ рдореЗрдВ, рдЗрд╕реЗ com.sencha рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╣рд░ рдХреБрдЫ рд╣рдлреНрддреЛрдВ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдбреЗрд╡рд▓рдкрд░ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реЗ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗрд╡рд▓ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдФрд░ рдПрдХ рдПрдкреАрдЖрдИ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЕрднреА рддрдХ рддрдп рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рд╣реИрдВред
рд╕рдВрджрд░реНрдн