问题标签 [jsni]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gwt - 使用 JSNI 从 servlet 调用 Java 函数
我创建了 JSNI 方法,我正在使用另一个方法注册“createCallbackFunction”方法
我正进入(状态
在警报中作为输出。
我试图从一个 struts 动作类中调用它
但是Javascript没有被执行。警报都不起作用,上传方法也没有被调用。
javascript - 如何使用 GWT 的 JSNI 将函数指针传递给 javascript 函数?
我以前使用过 JSNI,但我从来没有使用它传递函数指针作为参数,我不知道该怎么做。任何帮助表示赞赏!
java - 包装/装饰 GWT FileUpload
GWT FileUpload 是作为一个小部件出现的,它可以在表单提交期间上传文件(至少我是这么理解的:))我想要做的是让它看起来更好看并摆脱标准的“浏览。 ..“ 按钮。
由于我没有良好的 GWT 经验(也没有 JavaScript),因此我寻找现有的解决方案并找到了一个相当不错的项目 - gwtupload。这很好,但我意识到我很想拥有自己的微型版本(而且,我很好奇它是如何工作的)。所以我浏览了代码并试图提取神奇的部分。我意识到使用了 GWT FileInput,但它没有显示,并且按钮点击被委托给这个 FileInput。在查看gwtupload的源代码后,我尝试提取的代码(仅代表单击的部分)包含这个棘手的elem.click()
JSNI:
但这似乎不起作用:单击“我的浏览..”没有任何效果(以防万一我也尝试使用未注释的container.add(upload)
行运行)。您能否帮助我理解此代码示例中的错误/缺失?
先感谢您。
PS我知道我必须把它放在FormPanel上,我知道其余的关于如何在Servlet中执行实际的提交/处理;我唯一想做的就是这种装饰。
arrays - 在 GWT 中使用类对象创建新数组
我想从 GWT 中的类对象创建一个具有给定类型的新数组。
我的意思是我想模仿
我需要发生这种情况的原因是我有一个库,它偶尔需要执行以下操作:
如果我正常传递一个数组类,这可以工作,但我不能从某个任意组件类型动态创建一个新数组。
我很清楚 GWT 缺乏反思;我明白这一点。然而,即使考虑到 GWT 的有限反射,这似乎也是可行的。我相信这是因为在实现中,存在一个不可访问的静态方法来为数组创建类对象。
同样,我理解数组方法只是 JavaScript 数组的类型安全包装器,因此应该很容易破解,即使需要 JSNI。
实际上,更重要的是获取类对象,我可以解决无法创建新数组的问题。
javascript - GWT:使用 JsDate 和 Java Date
在我的叠加层中,我将 JavaScript Date 对象包装在 JsDate 中:
但是,当我想在小部件中使用该日期时,比如 DateBox,我需要将该值设置为 Java 日期。我可以从我的 JsDate 创建一个 Java Date,但我相信这会增加一些开销。
有没有更清洁的方法来实现这一目标?将 JsDate 对象转换为 Java Date 对象的最佳方法是什么,反之亦然?
非常感谢
java - 如何将 Java varargs 与 GWT Javascript Native Interface 一起使用?(又名,“GWT 没有 printf()”)
作为新项目的一部分,我正在尝试快速学习 GWT。我发现 GWT 没有实现 Java 的 String.format() 函数,所以没有类似 printf() 的功能。我知道 Javascript 存在一些 printf() 实现,所以我想我可以将其中之一粘贴为 GWT Javascript Native Interface 函数。我遇到了问题,并决定我最好确保正确传递可变参数值。这就是事情变得丑陋的地方。首先,一些示例代码:
GWT 文档指出“从 Java 调用 varargs JavaScript 方法将导致被调用者接收数组中的参数”。我认为这意味着我至少可以检查 params.length,但是访问它会抛出一个包裹在 UmbrellaException 中的 JavascriptException,而没有任何真实信息。当我执行“typeof(params)”时,它返回“function”。好像这还不够奇怪,如果我检查 params 的字符串值,它会返回似乎是 Java 引用的字符串版本。
所以,我想我在这里问了几个不同的问题:
1) GWT/JSNI 可变参数是如何工作的,我需要做一些特殊的事情来传递值吗?
2)这里到底发生了什么?
3) 有没有更简单的方法在 GWT 应用程序中获取 printf() 样式的格式?
gwt - GWT JSNI - 传递字符串的问题
我试图在我的 GWT 项目中提供一些功能挂钩:
publish()
被叫进来onModuleLoad()
。但这不起作用,在开发控制台中没有提供有关原因的反馈。我也试过:
尽管火灾很好,但它会java.lang.ClassCastException
在 FireBug 控制台中抛出一个。alert
建议?
javascript - GWT 2.x $入口函数
找不到有关此功能的任何开发人员信息。我只知道建议使用此$entry
函数将 JSNI JavaScript 调用包装到 Java 方法。我发现它可以捕获异常,以便 Java 代码可以处理它们。这就是它的全部吗?
java - 从 html 脚本标签调用 GWT Java 函数
我有一个 GWT 项目,我想在 GWT 项目的主 html 文件中添加一个脚本标记,该文件调用位于我的客户端代码中的 Java 函数。
根据文档,我应该添加类似于以下 html 标记的内容:
其中com.myCompany.myProject.client.myClass是类路径,myFunction是我要调用的 java 函数。
当我使用以下 myFunction 实现尝试此操作时,没有任何反应:
也就是说,myFunction没有被调用。
但是当我从 JSNI 方法进行相同的调用时,它就可以工作了。
可能无法从 html 脚本进行调用,还是我做错了什么?
谢谢!
gwt - GWT:对 getElementById() 的 JSNI 函数调用返回 Null
我正在尝试使用 JSNI 在应用程序中显示谷歌地图。我已经在我的 index.html 页面中定义了脚本。
这是 uibinder 的定义(摘录到要点):
这是 initializeMap() 原生函数:
不幸的是,mapDiv 为空。有什么帮助吗?
我知道 gwt-maps 和 gwt-maps-v3 项目。第一个只支持 API 的 v2,而 gwt-maps-v3 对我不起作用,因此是 JSNI 方法。