Jquery ResourceDependency批注在UIComponent中不起作用

时间:2014-01-24 16:56:02

标签: jquery jsf uicomponents

我正在开发一个使用Jquery和@ResourceDependency批注的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");

    }
}

有人知道发生了什么吗?

1 个答案:

答案 0 :(得分:0)

@ResourceDependency声明,

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

希望JS文件完全位于以下位置:

WebContent
|-- META-INF
|-- WEB-INF
|-- resources
|    `-- jquery
|         `-- jquery-203.js
:

确保这是真的。在浏览器中提取页面时,右键单击查看源以便您看到JSF生成的HTML输出,请确保在生成的{{1}中看到具体的/javax.faces.resource URL } element,因此一个<script> URL,表示无法根据给定的库和名称解析物理JS资源。