我正在开发一个使用@Resourcedependendenty注释的jQuery的UIComponent,但是在控制台中,在Console中显示了这个"未介绍的ReferageError:$未定义";
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");
}
}
有人知道发生了什么事吗?
此@ResourceDependency
声明,
@ResourceDependency(library="jquery", name="jquery-203.js", target="head")
期望JS文件完全处于以下位置:
网页内容| - meta-inf| - Web-Inf| - 资源|`-jQuery|`-JQuery-203.js:
确保这是真的。在浏览器中拉动页面时,执行右键单击, view source ,以便看到JSF生成的HTML输出,请确保您在生成的<script>
元素中看到了混凝土/javax.faces.resource
url RES_NOT_FOUND
URL,该URL表明无法根据给定库和名称解决物理JS资源。