LoginForm组件专门用来接受用户输入用户名和密码,并可以自动记住用户输入的用户名和密码。其基本用法如下:
// A wrapper with a caption for the login form
Panel loginPanel = new Panel("Login");
loginPanel.setWidth("250px");
LoginForm login = new LoginForm();
loginPanel.addComponent(login);
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’
@Override
protected 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();
}
分享到:
相关推荐
赠送jar包:android-json-0.0.20131108.vaadin1.jar; 赠送原API文档:android-json-0.0.20131108.vaadin1-javadoc.jar; 赠送源代码:android-json-0.0.20131108.vaadin1-sources.jar; 赠送Maven依赖信息文件:...
org.vaadin.addons.dcharts-widget-0.10.0-dcharts-widget-0.10.0.jar
是一个Web组件,提供应用程序菜单功能,是一部分。 < vaadin> </ vaadin> 安装 安装vaadin-menu-bar : npm i @vaadin/vaadin-menu-bar --save 安装后,将其导入您的应用程序: import '@vaadin/vaadin-menu-...
赠送jar包:android-json-0.0.20131108.vaadin1.jar; 赠送原API文档:android-json-0.0.20131108.vaadin1-javadoc.jar; 赠送源代码:android-json-0.0.20131108.vaadin1-sources.jar; 赠送Maven依赖信息文件:...
Vaadin来自北欧的__Web__应用开发利器
| < vaadin> </ vaadin>安装安装vaadin-date-time-picker : npm i @vaadin/vaadin-date-time-picker --save 安装后,将其导入您的应用程序: import '@vaadin/vaadin-date-time-picker/vaadin-date-time-picker.js...
cd vaadin-microservices-demo mvn package 运行演示 使用多个(七个)终端执行以下步骤: 1)启动discovery-server应用程序(Eureka应用程序): cd vaadin-microservices-demo/discovery-server java -jar ...
< vaadin> </ vaadin>安装安装vaadin-rich-text-editor : npm i @vaadin/vaadin-rich-text-editor --save 安装后,将其导入您的应用程序: import '@vaadin/vaadin-rich-text-editor/vaadin-rich-text-editor.js' ...
Vaadin的UI组件CSS样式规则,Vaadin的UI组件CSS样式规则
vaadin-list-mixin vaadin-list-mixin是nav元素的混合,有助于导航和选择childNodes。 在浏览器中运行测试 分叉vaadin-list-mixin存储库并在本地克隆。 确保已安装和 。 在vaadin-list-mixin目录中时,运行npm ...
使用Web组件,redux和lit-html构建Web应用程序该存储库托管“事件”应用程序,该应用程序是在研讨会的期间开发的。 Web标准的新手? 结帐: : Web组件的新手? 结帐: : 从未构建过应用程序? 结帐: : 迁移到...
vaadin-edit-table-example 使用 commons-vaadin 库类 EditableTableDecorator 的 VAADIN 可编辑表示例。 这个助手类在 commons-vaadin 1.0.17 或更高版本中可用。 下载 通过 Maven 抓取: < groupId>topgroup....
<vaadin> | 是一个Web组件,为item元素( 一部分)提供了一个容器。 < vaadin> Simple Item </ vaadin> ... import '@vaadin/vaadin-item/vaadin-item.js' ; 入门 Vaadin组件默认使用Lumo主题。 要使用M
vaadin-material-styles是可自定义主题。 在浏览器中运行演示和测试 分叉vaadin-material-styles存储库并在本地克隆。 确保已安装和 。 在vaadin-material-styles目录中时,运行npm install ,然后运行bower ...
是用于业务Web应用程序的不断发展的高质量Web组件集。 安装 从npm安装所需的组件: npm install @vaadin/vaadin-grid 用法 导入组件JavaScript模块,在HTML中使用该组件,然后使用JavaScript对其进行控制: <!...
import '@vaadin/vaadin-crud/vaadin-crud.js' ; 入门 Vaadin组件默认使用Lumo主题。 要使用Material主题,请从theme/material文件夹导入对应的文件。 入口点 具有Lumo主题的组件: theme/lumo/vaadin-crud.js ...
通过这款插件,你可以利用标准WP条件标签来决定是否在某个页面显示你的widgets。
<vaadin> | 包含两个组件: <vaadin>是Web组件,可提供无痛的登录体验,是一部分。 组件在覆盖内显示<vaadin>。 < vaadin> </ vaadin> <vaadin>... < vaadin> </ vaadin>安装安装vaadin-login : npm i @vaadin/vaadin-
vaadin-container-utils vaadin-container-utils 是一个 util 库,用于促进容器的创建。 作者文森特·德梅斯特 (vincent+github@demeester.fr) 版本0.3.0 地位掌握 : 开发 : 它目前包含两个主要使用的类: ...
vaadin-charts元素的演示应用程序 设置 先决条件 首先,使用安装 (我们假设您已经预安装了 )。 npm install -g polymer-cli 安装依赖项 bower install 启动开发服务器 此命令在http://localhost:8080为应用...