我正在尝试从 vaadin 项目中的 java 类调用 javascript 函数。过去我使用 RPC 调用来这样做,但这次我只需要调用一个 js 函数,我想我可以用 JavaScript.getCurrent() 之类的东西来完成。执行(“测试()”);
所以我有一个 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
文件时,您会在控制台中收到警告。
关于javascript - 从 vaadin 中的 java 类调用 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38528851/