将值从Java函数分配/传递到JS/JQuery函数
假设我有一个Java函数,比如将值从Java函数分配/传递到JS/JQuery函数,java,javascript,jquery,tapestry,Java,Javascript,Jquery,Tapestry,假设我有一个Java函数,比如 public int getNumber(){ } Tapestry.Validator.amountValidator = function(field, message) { field.addValidator(function(value) { if (value != null) { // code here } } }); }; 根据它的逻辑返回一些值
public int getNumber(){
}
Tapestry.Validator.amountValidator = function(field, message) {
field.addValidator(function(value) {
if (value != null) {
// code here
}
}
});
};
根据它的逻辑返回一些值。我有一个JS文件,比如
public int getNumber(){
}
Tapestry.Validator.amountValidator = function(field, message) {
field.addValidator(function(value) {
if (value != null) {
// code here
}
}
});
};
现在我在问自己,在JS或JQuery中是否可以将值从Java函数传递到JS中的函数(值),如果可以,如何实现
更新:根据abalos的回答,Tap for If已经完成了4个阶段中的3个。我提供了一个处理服务器端及其背后逻辑的函数
@InjectComponent
private TextField amount;
@Inject
private FieldValidatorSource fieldValidatorSource;
public FieldValidator<?> getAmountValidator()
{
return fieldValidatorSource.createValidators(amount, "required,max=" + getBroj());
}
@InjectComponent
私有文本字段数量;
@注入
私有FieldValidatorSource FieldValidatorSource;
公共字段验证器getAmountValidator()
{
return fieldValidatorSource.createValidators(amount,“required,max=“+getBroj());
}
现在,验证器是从函数getBroj()中的逻辑中获取的,这是它所获取的最大数量。这就像服务器端的一个符咒。现在我认为我没有的(使用我的逻辑)只是客户端,我可以通过从Tapestry更新当前的验证类来实现它,该类将处理此类类已知的请求。要做到这一点,我需要用一个函数调用一个js文件,该函数在示例中调用了类似上面的东西,但我不太确定如何将getNumber()函数的值传递给上面的js函数。我认为您对Java和jQuery/Javascript是什么类型的语言有一些非常严重的误解。首先,除了node.js之外,jQuery/Javascript用于客户端操作。Java用于服务器端操作。这意味着您需要将一个值从服务器传递到客户端 现在,您所要求的最初看起来像是试图执行验证。这不应该只在客户端完成。有一些方法可以绕过客户端验证,最好将来自客户端的信息保持在“不受信任”状态,直到在服务器上验证为止 综上所述,要完成您试图完成的任务,需要使用某种方法让客户端与服务器通信。对于简单的操作,我最喜欢的方法是通过web服务 以下是您所需的步骤,但请注意,这不是唯一的方法。
如果您有任何问题,请告诉我。您根本不需要Jersey或DWR或任何其他框架来调用Tapestry中的方法。你只需要适当地提问
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。您不知道ajax和DWR吗?回答得好。为我自己点击执行所有1。2.三,。所以我不必处理它。我将更新我的答案,以便更好地总结我在这里要实现的目标,即第4条。@true听起来不错。我对Tapestry框架不太熟悉,但我很高兴能够帮助您开始学习。海报首先在Tapestry用户邮件列表中询问了这一点,因此这个问题实际上是Tapestry特有的,即使描述没有说明这一点。@ThiagoH.dePaulaFigueiredo问题被标记为“Tapestry”