gpt4 book ai didi

java - 帮助在 Tapestry5 中创建 JavaScript 混合?

转载 作者:行者123 更新时间:2023-11-30 11:58:58 25 4
gpt4 key购买 nike

我正在创建一个 mixin,它在文本字段获得焦点时呈现一个 javascript 文件。

我对 Tapestry 中的 mixins 的想法很陌生,我不确定将我希望在文本字段获得焦点时运行的原始 javascript 文件放在哪里。

以下是我的代码示例:Java 混合类:

package asc.mixins;

import org.apache.tapestry5.RenderSupport;
import org.apache.tapestry5.annotations.AfterRender;
import org.apache.tapestry5.annotations.Environmental;
import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
import org.apache.tapestry5.annotations.InjectContainer;
import org.apache.tapestry5.corelib.base.AbstractTextField;

@IncludeJavaScriptLibrary("js_dasher_mixin.js")
public class DasherMixin {

@Environmental
private RenderSupport renderSupport;

@InjectContainer
private AbstractTextField field;

@AfterRender
void addScript() {
this.renderSupport.addScript("new JSDasher('%s');",
this.field.getClientId());
}


}

Javascript 混合文件:

JSDasher = Class.create({

initialize: function(textField)
{
this.textField = $(textField);

this.textField.observe('focus', this.onFocus.bindAsEventListener(this));
},

onFocus: function(event)
{
//call my javascript init() function
}
}

我希望在文本字段获得焦点时运行我的 javascript 文件的一部分:

var posX, posY;


// Sets up our global variables and dispatches an init request to the server.
function init() {

posX=0;
posY=0;
canvas = document.getElementById("canvas");
canvasWidth = canvas.offsetWidth;
canvasHeight = canvas.offsetHeight;
if (canvas.getContext) {
ctx = canvas.getContext("2d");
}

canvas.onclick = canvasClicked;
canvas.onmousemove = mouseMoved;

canvasOffsetX = findPosX(canvas);
canvasOffsetY = findPosY(canvas);

sessID = -1;

sendInitRQ(canvasWidth, canvasHeight);

}

我的 javascript 文件比上面的大很多,我的问题是我应该把我的 javascript 代码放在哪里?

是否应该全部包含在 mixin.js 文件中?如果是这样,它应该去哪里?

在此先感谢您的帮助。

最佳答案

该方法可以在 mixin.js 中自由 float ,但名称类似于 init,您可能会遇到冲突。您可以将它放在 JSDasher 类本身或将主体移动到 onFocus 函数。您还可以在 JSDasher 类上定义任何其他函数,并使用 this.function_name 调用它们。以 Tapestry 源代码中的 datefield.js 为例。

关于java - 帮助在 Tapestry5 中创建 JavaScript 混合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2804549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com