我是primefaces的新手,我想使用primeface的autocomplete标签。所以我已经完成了this example。这是我的代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<head>
<title>Title</title>
</head>
<body>
<h:form id="form">
<p:panel header="AutoComplete" toggleable="true" id="panel">
<h:panelGrid columns="2" cellpadding="5">
<h:outputLabel value="Simple :" for="acSimple" />
<p:autoComplete id="acSimple" value="#{autoCompleteBean.txt1}"
completeMethod="#{autoCompleteBean.complete}"/>
</h:panelGrid>
</p:panel>
</h:form>
</body>
</html>
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name="autoCompleteBean")
@RequestScoped
public class AutoCompleteBean {
private String txt1;
public List<String> complete(String query) {
List<String> results = new ArrayList<String>();
for (int i = 0; i < 10; i++) {
results.add(query + i);
}
return results;
}
public String getTxt1() {
return txt1;
}
public void setTxt1(String txt1) {
this.txt1 = txt1;
}
}
所以layout.xhtml渲染得很好,并向我显示一个文本字段但在此之后它不起作用,并且没有显示自动完成功能。
是否缺少某些东西?或者会出现什么问题。谢谢
答案 0 :(得分:1)
您发布的xhtml使用 head 和 body 的标准html标签,因此可能不是正确解释用于调用bean中的完整方法的Javascript。
尝试使用 h:head 和 h:body 。
提示可能会显示在输出窗口中。检查以下内容:
sourceId=null[severity=(ERROR 2), summary=(One or more resources have the target of 'head', but no 'head' component has been defined within the view.), detail=(One or more resources have the target of 'head', but no 'head' component has been defined within the view.)]
请参阅有关h:head in primefaces的Stack Overflow讨论:What's the difference between <h:head> and <head> in Java Facelets?
答案 1 :(得分:0)
在编写facelets时,应始终使用 h:head 和 h:body 。原因是为了使自动完成工作javascript是必需的,如果你不包括h:head jsf将无法正确放置javascript。
答案 2 :(得分:0)
我遇到了类似的问题,但是在我的情况下,当我移除围绕 p:autocomplete 标记的 p 标记时,问题就解决了。
以下代码不会抛出错误消息,但不会显示自动选择下拉菜单。删除cmd.ExecuteNonQuery();
后一切正常。
<p></p>