[英]call a javascript function from java class in vaadin
我正在嘗試從vaadin項目中的Java類調用javascript函數。 過去,我曾經使用RPC調用來執行此操作,但是這次僅是我需要調用的js函數,我想我可以使用JavaScript.getCurrent().execute("test()");
所以我有一個vaadin項目,這是我想從以下位置調用該函數的類:
package my.vaadin.project.vaadinUploader;
import com.vaadin.annotations.JavaScript;
import com.vaadin.ui.CustomComponent;
import com.vaadin.ui.TextField;
import com.vaadin.ui.VerticalLayout;
@JavaScript({ "https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js", "vaadin://js/script.js" })
public class UploaderComponent extends CustomComponent
{
final TextField name;
final TextField surname;
//final Label div;
final VerticalLayout formLayout = new VerticalLayout();
public UploaderComponent(){
formLayout.addStyleName("myLayout");
//div = new Label();
name = new TextField();
surname = new TextField();
name.setCaption("Type your name here:");
surname.setCaption("Type your surname here:");
formLayout.addComponents(name, surname);
}
}
該腳本位於一個自定義文件夾中,但是我不確定可以在哪里調用該js函數,因為我似乎一直都在出錯。 任何想法?
您的調用JavaScript.getCurrent().execute("test()");
是正確的,只要方法test()
正確聲明(顯然不是這種情況)。
假設script.js
源代碼包含test()
函數的聲明,則可能是您將script.js
放在了錯誤的位置。
使用vaadin://
前綴,您的文件應相對於src/main/webapps/VAADIN
目錄,因此在您的情況下為src/main/webapps/VAADIN/js/script.js
如果您省略了vaadin://
前綴(即@JavaScript("script.js")
),並且您正在使用Maven,則文件的正確位置是src/main/resources/
,然后是您的Java源代碼所在的位置。 所以在你的情況下src/main/resources/my/vaadin/project/vaadinUploader/script.js
另請注意,訪問無法定位的@Javascript
文件時,您將在控制台中收到警告。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.