如何在不使用getElement方法的情况下为Vaadin 8 TextField设置属性
解决方案
getElement()是Vaadin 10及后续Flow版本才提供的API,Vaadin 8的组件体系没有该接口,你可以直接用Vaadin 8原生的方法实现需求:
把报错的代码行
nameField.getElement().setAttribute("focus-target", "");
直接替换为:
nameField.setAttribute("focus-target", "");
TextField的父类AbstractComponent提供的setAttribute(String 属性名, String 属性值)方法,会直接将自定义属性添加到客户端渲染的对应DOM元素上,完全满足你添加focus-target属性的需求。
如果需要对DOM做更复杂的自定义操作,也可以通过调用客户端JS实现:
Page.getCurrent().getJavaScript().execute( "document.querySelector('.v-textfield').setAttribute('focus-target', '');" );
第一种方案已经足够覆盖绝大多数常规场景,不需要额外编写JS代码。
内容的提问来源于stack exchange,提问作者Andferdd
相关产品推荐
相关产品推荐

