从Java函数向JS/JQuery函数赋值/传递值
Assigning/Passing value from Java function to JS/JQuery function
假设我有一个类似的Java函数
public int getNumber(){
}
它根据其逻辑返回一些值。我有一个类似的JS文件
Tapestry.Validator.amountValidator = function(field, message) {
field.addValidator(function(value) {
if (value != null) {
// code here
}
}
});
};
现在我在问自己,在JS或JQuery中,是否可以将Java函数的值传递给JS中的函数(值)?如果可以,如何实现?
更新:正如abalos的回答所建议的,Tap for我自己已经完成了4个阶段中的3个。我正在提供一个处理服务器端及其背后逻辑的功能。
@InjectComponent
private TextField amount;
@Inject
private FieldValidatorSource fieldValidatorSource;
public FieldValidator<?> getAmountValidator()
{
return fieldValidatorSource.createValidators(amount, "required,max=" + getBroj());
}
现在,这里的验证器是从函数getBroj()中的一个逻辑中获取的,这是它所获取的最大数量。这在服务器端就像一个魅力。现在我在想,我所没有的(使用我的逻辑)只是客户端,我可以通过从Tapestry更新当前的Validation类来实现它,该类将处理该类已知的这种请求。要做到这一点,我需要调用一个js文件,其中有一个函数调用上面的例子,但我不太确定如何将值从getNumber()函数传递到上面的js函数。
在Tapestry中调用方法根本不需要Jersey、DWR或任何其他框架。你只需要适当地提出你的问题。
final private static String EVENT_NAME = "whateverEventNameYouWant";
@Inject
private ComponentResources resources;
@Inject
private JavaScriptSupport javaScriptSupport;
/** Method that will provide the value you want to pass to JS. */
@OnEvent(EVENT_NAME)
public JSONObject provideValue() {
JSONObject object = new JSONObject();
object.put("value", /* the value you want to pass to JS */);
// other values you may want to pass
return object;
}
void afterRender() {
// This creates an URL for the event you created. Requesting it will
// invoke any event handler methods for that event name.
Link link = resources.createEventLink(EVENT_NAME);
javaScriptSupport.addScript("var eventUrl = '%s';", link.); // the JavaScript variable name doesn't matter. You can choose any you want
}
然后,在您的JavaScript中,使用eventUrl变量中的URL执行AJAX请求。我将把这一部分留给您从jQuery文档中了解。接收到的数据正是您将在事件处理程序方法中返回的JSONObject或JSONArray。
我认为您对Java和jQuery/Javascript的语言类型有一些非常严重的误解。首先,除了node.js之外,jQuery/Javascript用于客户端操作。Java用于服务器端操作。这意味着您需要将一个值从服务器传递给客户端。
现在,您所要求的最初看起来像是在尝试执行验证。这不应该只在客户端上完成。有一些方法可以绕过客户端验证,最好将客户端的信息保持在"不受信任"状态,直到在服务器上进行验证。
话虽如此,要想完成您想要做的事情,需要使用某种方法让客户端与服务器进行通信。我最喜欢的简单操作方式是通过web服务。
以下是您需要的步骤,但请注意,这不是唯一的方法
- 使用Jersey创建web服务
- 通过AJAX将值传递给web服务,其中包含JSON或XML以及包含该值的请求
- 使用服务中的信息在服务器端执行验证
- 将rest服务的响应传递回客户端AJAX调用,并将其用于JS/jQuery代码
如果你有任何问题,请告诉我。
- 将ECMAScript 6析构函数赋值(ES2015)重构为旧版本的javascript
- 将函数赋值给 javascript 中的元素
- 如何在 jQuery 中的变量中调用函数赋值
- 在 JavaScript 中将函数赋值给变量
- CoffeeScript-如何将长的析构函数赋值分解为多行
- 循环内部的jQuery mouseover()函数赋值不正确
- 从Java函数向JS/JQuery函数赋值/传递值
- 原型继承上的构造函数赋值
- 为函数赋值并在单独的按钮jquery上运行
- 在javascript中,这种函数赋值给变量是有用的
- 将非匿名函数赋值给变量
- 有没有办法使构造函数赋值更简洁(和简单)?
- 如何将函数赋值给对象
- 将函数赋值给变量并运行它自己
- 如何将返回的Javascript函数赋值给PHP变量并在SQL查询中使用
- 将已定义的函数赋值给具有一组参数的变量
- Javascript在函数赋值后未定义
- Javascript将函数赋值给现有变量
- 将构造函数赋值给某物是什么意思?
- 将php函数赋值给动态创建的对象