我想在我的网站上添加一个自动完成字段,我从PrimeFaces找到了p:autoComplete。我以前从未使用过PrimeFaces所以我遵循了tutorial。
只要我通过http://localhost:8080/myWebsite
访问我的网站,但是当我尝试通过http://192.168.34.179:8080/myWebsite
(或从我的网络中的任何其他计算机)访问时,这一切似乎都可以在IE8和Chrome上正常运行完成不适用于IE8(它在Chrome上运行正常)。
该网站部署在GlassFish Server 3.1.2上,我正在使用带有PrimeFaces 3.2的JavaServer Faces 2.1
Xhtml代码:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>TPM Log</title>
<h:outputStylesheet name="tpm.css"/>
</h:head>
<h:body>
<h1>
<h:outputText value="Preventive Maintenance Daily Walk Around Log"/>
</h1>
<h:form id="AddTpmLog">
<p:autoComplete id="operator1" value="#{databaseManagedBean.name}"
completeMethod="#{autoCompleteBean.complete}"/>
</h:form>
</h:body>
autoCompleteBean的代码:
package Beans;
import entities.Operators;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
@ManagedBean
@RequestScoped
public class AutoCompleteBean implements Serializable {
@ManagedProperty(value = "#{databaseManagedBean}")
private DatabaseManagedBean dbBean;
public List<String> complete(String query) {
List<String> results = new ArrayList<String>();
for (Operators operator : dbBean.getOperators()) {
if (operator.getFirstName().toLowerCase().startsWith(query.toLowerCase())) {
results.add(operator.toString());
} else {
if (operator.getLastName().toLowerCase().startsWith(query.toLowerCase())) {
results.add(operator.toString());
}
}
}
return results;
}
/**
* @return the dbBean
*/
public DatabaseManagedBean getDbBean() {
return dbBean;
}
/**
* @param dbBean the dbBean to set
*/
public void setDbBean(DatabaseManagedBean dbBean) {
this.dbBean = dbBean;
}
}
DatabaseManagedBean是一个负责与MySQL服务器通信的Bean,从中提取自动完成字段的列表。
我没有想法如何修复它。
答案 0 :(得分:0)
有几件事。
我想dbBean.getOperators()获取db上的所有运算符。这样,您将从数据库获取所有数据并在视图上执行过滤。我会做这样的事情。
public List complete(字符串查询){
列表结果= new ArrayList();
for(运算符运算符:dbBean.getOperatorsFiltered(query)){
results.add(operator.toString());
返回结果;
}
dbBean.getOperatorsFiltered(query)将使用适当的clasule对数据库进行查询。
另请注意,Primefaces展示会更新为primefaces 4。