Có thể đặt thuộc tính HTML5 autocomplete="off"
trên TextField trong Vaadin 7
không? Tôi đã tìm kiếm nhưng không tìm thấy cách nào để đặt thuộc tính trên các trường văn bản hoặc chỉ gợi ý trình duyệt để vô hiệu hóa tính năng tự động hoàn thành gốc trên các trường nhập theo cách khác trong vaadin.Cách đặt tự động điền = "tắt" trong vaadin
Trả lời
Tôi nghĩ rằng cách duy nhất nếu bạn sử dụng javascript:
TextField tf = new TextField();
tf.addStyleName("xyz");
JavaScript.getCurrent().execute(
"document.getElementsByClassName('xyz')[0].setAttribute('autocomplete', 'off')");
Mở rộng TextField ...
package com.example;
import com.vaadin.ui.TextField;
public class MyTextField extends TextField {
// do other customization here as needed
}
... và - là những gì các trọng điểm đây - khách hàng- của nó side Connector
package com.example.client;
import com.vaadin.client.ui.VTextField;
import com.vaadin.client.ui.textfield.TextFieldConnector;
import com.vaadin.shared.ui.Connect;
@Connect(com.example.MyTextField.class)
public class MyTextFieldConnector extends TextFieldConnector {
@Override
public VTextField getWidget() {
VTextField vTextField = super.getWidget();
vTextField.getElement().setAttribute("autocomplete","off");
return vTextField;
}
}
Đừng quên biên dịch lại bộ tiện ích con.
Nếu bạn sử dụng Viritin add-on, bây giờ bạn có thể sử dụng lớp HtmlElementPropertySetter để bọc thành phần TextField của bạn và sử dụng để đặt thuộc tính phần tử "tự động hoàn thành" thành "tắt". Bạn cũng có thể sử dụng thành phần MTextField đi kèm với Viritin và chỉ cần tạo nó như sau:
MTextField username = new MTextField("Username")
.withAutocompleteOff();
Đây là phần mở rộng cho câu trả lời của @Wojciech Marciniak. Cách tiếp cận của ông đã làm việc cho tôi, nhưng tôi muốn lưu ý một vài hoặc ba sửa đổi tôi đã phải làm để cho nó làm việc như của 2017/11/28.
1) autocomplete="off"
dường như không hoạt động nữa hiện nay; ít nhất không phải trên Chrome. Thay vào đó, bạn có thể sử dụng autocomplete="new-password"
, hoạt động trên các cửa sổ Chrome 62.0.3202.94 64 bit. Tôi cũng nhận thấy một số hành vi không nhất quán với thuộc tính này, vì KHÔNG phải lúc nào cũng hoạt động - đôi khi danh sách có các lựa chọn cho mật khẩu sẽ hiển thị trên thành phần (đặc biệt cho đến khi bạn làm mới vài lần, v.v.).
2a) Thay vì mở rộng thành phần, bạn có thể ghi đè lên bằng cách tạo gói com.vaadin.client.ui.(component)field
trong dự án của mình, sau đó đặt tệp (component)FieldConnector.java
đã sửa đổi trong trường hợp bạn muốn sửa đổi PasswordField
) trong trường hợp bạn muốn tất cả các trường hợp của thành phần này để không nhớ mật khẩu. Nguồn lớp học cuối cùng sẽ trông giống như sau:
package com.vaadin.client.ui.passwordfield;
import com.vaadin.client.ui.VPasswordField;
import com.vaadin.client.ui.textfield.TextFieldConnector;
import com.vaadin.shared.ui.Connect;
import com.vaadin.ui.PasswordField;
@Connect(PasswordField.class)
public class PasswordFieldConnector extends TextFieldConnector {
@Override
public VPasswordField getWidget() {
VPasswordField vTextField = (VPasswordField) super.getWidget();
vTextField.getElement().setAttribute("autocomplete","new-password");
return vTextField;
}
}
Vì vậy, theo cách này bạn không cần bất kỳ lớp mở rộng TextField khác (hoặc Mật khẩu).
2b) Nếu bạn muốn cho phép một số trường ghi nhớ mật khẩu và các trường khác không nhớ, bạn có thể mở rộng thành phần và sử dụng thành phần ưu tiên của bạn cho phù hợp. Bạn có thể giữ lớp kết nối của bạn như trong 2a) nhưng hãy nhớ đặt tên cho nó là CustomPasswordFieldConnector
và nó cũng phải là @Connect
với lớp CustomPasswordField.class đó, đặt lớp đó ở bất kỳ đâu trong dự án của bạn và nhớ thêm import
thích hợp cho nó kết nối trong trường hợp cần thiết. Lớp này chỉ là một lớp giả - bạn có thể để trống nội dung của nó trong trường hợp bạn không cần thêm bất kỳ chức năng nào (nhưng hãy nhớ nó sẽ mở rộng thích hợp (component)Field
; PasswordField
trong ví dụ).
- 1. Tự động điền tự động điền jQuery không giữ lại
- 2. Tắt tự động điền trên trường văn bản ở Django?
- 3. Tắt tính năng Tự động điền của Firefox
- 4. Tự động điền tự động Emacs
- 5. Tự động điền của Chrome không kích hoạt xác thực. Sự kiện tự động điền chuẩn?
- 6. Đặt phím tắt tự động hoàn thành trong Eclipse
- 7. Tự động cập nhật hộp tự động điền trong Android?
- 8. Tự động điền các ngày trong tuần
- 9. Thực hiện Tự động điền trong iOS
- 10. Cách tắt tính năng Tự động điền mới từ Android Oreo để kiểm tra cà phê
- 11. Tiện ích tự động điền trong yii
- 12. Số tiền tự động điền
- 13. Google Place Tự động điền trong Xamarin.Forms
- 14. Tự động điền biến tĩnh trong PHP
- 15. các trường mẫu tự động điền webrat
- 16. JQuery tự động hoàn tất cách viết nhãn trong nhập văn bản tự động điền?
- 17. vaadin eclipse cài đặt plugin
- 18. Cách tắt tự động kết nối WIFI trong Android
- 19. Tắt tự động xoay và đặt giữa các tệp PDF
- 20. Cài đặt Postgres tự động tắt trên toàn cầu
- 21. Tắt tính năng tự động điền trên biểu mẫu web thông qua HTML hoặc JavaScript?
- 22. Cách tự động điền tệp sơ đồ trang web
- 23. Đặt giá trị của InstallDir trong một hàm, hoặc đặt tự động điền giá trị bằng cách nào đó?
- 24. Tự động điền Safari "reset password token" nhập
- 25. Cách tắt tự động cập nhật trong hibernate/JPA
- 26. Tự động điền của trình duyệt
- 27. Triển khai tự động điền trên MongoDB
- 28. Eclipse tự động đề xuất và điền tên biến
- 29. Bật tự động điền biểu mẫu của trình duyệt
- 30. Tự động điền #ifdef .. # endif trong vim qua .vimrc
Tôi không còn làm việc trong dự án Vaadin để xác nhận xem nó có hoạt động hay không. Nếu một số bên thứ ba xác nhận, tôi sẽ đặt câu trả lời này là được chấp nhận vì nó sẽ là cách ưa thích của tôi để làm trong Java, hơn là với JavaScript –