问题描述
在我的vaadin应用程序中,我试图创建一个登录表单。如果我使用vaadin框架提供的默认登录表单。我可以通过.setAction()方法设置用户输入数据的发布,以提高安全性。
private LoginForm login = new LoginForm();
public Login(){
addClassName("login-view");
setSizefull();
setAlignItems(Alignment.CENTER);
setJustifyContentMode(JustifyContentMode.CENTER);
**login.setAction("login");**
add(new H1("Vaadin CRM"),login);
}
但是,我不想使用此登录表单,而是使用通过水平布局或其他方式创建的自定义设计表单。问题是,这些组件或布局中的任何一个都没有此.setAction()方法,我可以在其中将数据发布提交到“登录”位置。我也无法在他们的网站上找到解决方案或来源。因此,Spring Security不会检索这些用户名密码数据。我该如何克服这个问题?预先感谢。
解决方法
您需要一个客户端action
元素才能具有表单vaadin-login-form
。如果您看一下<form>
的实现方式,可以在这里看到vaadin-login-form
元素:https://github.com/vaadin/vaadin-login/blob/master/src/vaadin-login-form.html#L23-L36
拥有提交表单操作的自定义登录表单的最简单方法可能是创建与PolymerTemplate
类似的自定义Web组件,然后使用Element
将其绑定到服务器。如果您要坚持使用服务器端Java,还可以尝试使用带有标签form
的服务器端{{1}}来解决问题。