簡體   English   中英

從vaadin中的Java類調用javascript函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM