我正在开发一个使用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");
}
}
有人知道发生了什么吗?
答案 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资源。