首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

Vaadin Web应用开发课程(26):UI组件-LoginForm组件

2012-08-30 
Vaadin Web应用开发教程(26):UI组件-LoginForm组件LoginForm组件专门用来接受用户输入用户名和密码,并可以

Vaadin Web应用开发教程(26):UI组件-LoginForm组件

LoginForm组件专门用来接受用户输入用户名和密码,并可以自动记住用户输入的用户名和密码。其基本用法如下:

// A wrapper with a caption for the login formPanel loginPanel = new Panel("Login");loginPanel.setWidth("250px");        LoginForm login = new LoginForm();loginPanel.addComponent(login);

Vaadin Web应用开发课程(26):UI组件-LoginForm组件

LoginForm组件内部实现使用了iframe 和静态HTML支持其功能。 如果你想定制LoginForm的外观可以重载getLoginHtml()方法。
下面介绍如何定制LoginForm组件。

class MyLoginForm extends LoginForm {    String usernameCaption;    String passwordCaption;    String submitCaption;        public MyLoginForm(String usernameCaption,            String passwordCaption, String submitCaption) {        this.usernameCaption = usernameCaption;        this.passwordCaption = passwordCaption;        this.submitCaption  = submitCaption;    }

然后重载getLoginHTML()方法:
HTML body 部分包含Form定义,包含在一个iframe 中。form 和button 必需定义对应的javascripts 响应用户点击”submit’

@Overrideprotected byte[] getLoginHTML() {    // Application URI needed for submitting form    String appUri = getApplication().getURL().toString()            + getWindow().getName() + "/";    String x, h, b; // XML header, HTML head and body x = "<!DOCTYPE html PUBLIC \"-//W3C//DTD "      + "XHTML 1.0 Transitional//EN\" "      + "\"http://www.w3.org/TR/xhtml1/"      + "DTD/xhtml1-transitional.dtd\">\n";     h = "<head><script type='text/javascript'>"      + "var setTarget = function() {"      + "  var uri = '" + appUri + "loginHandler';"      + "  var f = document.getElementById('loginf');"      + "  document.forms[0].action = uri;"      + "  document.forms[0].username.focus();"      + "};"      + ""      + "var styles = window.parent.document.styleSheets;"      + "for(var j = 0; j < styles.length; j++) {\n"      + "  if(styles[j].href) {"      + "    var stylesheet = document.createElement('link');\n"      + "    stylesheet.setAttribute('rel', 'stylesheet');\n"      + "    stylesheet.setAttribute('type', 'text/css');\n"      + "    stylesheet.setAttribute('href', styles[j].href);\n"      + "    document.getElementsByTagName('head')[0]"      + "                .appendChild(stylesheet);\n"      + "  }"      + "}\n"      + "function submitOnEnter(e) {"      + "  var keycode = e.keyCode || e.which;"      + "  if (keycode == 13) {document.forms[0].submit();}"      + "}\n"      + "</script>"      + "</head>";     b = "<body onload='setTarget();'"      + "  style='margin:0;padding:0; background:transparent;'"      + "  class='"      + ApplicationConnection.GENERATED_BODY_CLASSNAME + "'>"      + "<div class='v-app v-app-loginpage'"      + "     style='background:transparent;'>"      + "<iframe name='logintarget' style='width:0;height:0;"      + "border:0;margin:0;padding:0;'></iframe>"      + "<form id='loginf' target='logintarget'"      + "      onkeypress='submitOnEnter(event)'"      + "      method='post'>"      + "<table>"      + "<tr><td>" + usernameCaption + "</td>"      + "<td><input class='v-textfield' style='display:block;'"      + "           type='text' name='username'></td></tr>"      + "<tr><td>" + passwordCaption + "</td>"      + "    <td><input class='v-textfield'"      + "          style='display:block;' type='password'"      + "          name='password'></td></tr>"      + "</table>"      + "<div>"      + "<div onclick='document.forms[0].submit();'"      + "     tabindex='0' class='v-button' role='button'>"      + "<span class='v-button-wrap'>"      + "<span class='v-button-caption'>"      + submitCaption + "</span>"      + "</span></div></div></form></div></body>";      return (x + "<html>" + h + b + "</html>").getBytes();}  

Vaadin Web应用开发课程(26):UI组件-LoginForm组件


 


 

热点排行