0

我正在开发一个使用带有 @ResourceDependency 注释的 Jquery 的 UIComponent,但在运行时控制台中显示此“未捕获的 ReferenceError:$ 未定义”;

Java代码:

@FacesComponent(value = "components.InputInditec", createTag = true, 
                   tagName = "InputInditec")
@ResourceDependencies({
    @ResourceDependency(library = "jquery", name = "jquery-203.js", target
            = "head")})
public class UiInputInditec extends UIComponentBase {

    @Override
    public String getFamily() {
        return "my.custom.component";
    }

    @Override
    public void encodeBegin(FacesContext context) throws IOException {

        String value = (String) getAttributes().get("value");
        String clientId = getClientId(context);

        ResponseWriter writer = context.getResponseWriter();
        writer.startElement("input", this);
        writer.writeAttribute("id", clientId + "edit", "id");
        if (value != null) {
            writer.writeAttribute("value", value.toUpperCase(), "value");
        }
        writer.endElement("input");

        writer.startElement("script", this);
        writer.writeAttribute("type", "text/javascript", null);
        writer.write("$(\"#" + clientId + "edit" + "\").keypress(function() { "
                + "console.log( 'Handler for .keypress() called.' ); });");
        writer.endElement("script");

    }
}

有人知道发生了什么吗?

4

1 回答 1

0

这个@ResourceDependency宣言,

@ResourceDependency(library="jquery", name="jquery-203.js", target="head")

期望 JS 文件位于以下位置:

网页内容
|-- 元信息
|-- 网络信息
|-- 资源
| `-- jQuery
| `-- jquery-203.js
:

确保这是真的。在浏览器中拉动页面时,右键单击,查看源代码,以便您看到 JSF 生成的 HTML 输出,确保您/javax.faces.resource在生成的<script>元素中看到具体的 URL,而不是RES_NOT_FOUND指示物理 JS 资源不能的URL根据给定的库和名称解析。

于 2014-01-24T19:17:23.897 回答