从 PrimeFaces 8 更新到 10 后,我的应用程序中的所有自动完成组件在打开下拉菜单时都不会显示值
列表仍为空。当我调试 AutoComplete 和 AutoCompleteRenderer 时,我可以看到生成了空查询的建议
但是稍后在 AutoCompleteRenderer 中,AutoComplete 是一个新实例(具有相同的组件 id),没有任何建议。
这是我的 JSF 页面
<!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:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</h:head>
<h:body>
<h:form>
<p:autoComplete value="#{testBean.item}"
dropdown="true"
completeMethod="#{testBean.completeItems}"
var="item"
itemLabel="#{item}"
itemValue="#{iten}" />
<p:outputLabel value="Selected item: #{testBean.item}" />
</h:form>
</h:body>
</html>
还有我的豆子
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.apache.commons.lang3.StringUtils;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@ManagedBean
@ViewScoped
public class TestBean {
private String item;
private final List<String> items = Arrays
.asList("item-0", "item-1", "item-2", "item-3", "item-4", "item-5", "item-6", "item-7", "item-8", "item-9");
public List<String> completeItems(final String query) {
return items.stream()
.filter(i -> StringUtils.containsIgnoreCase(i, query))
.collect(Collectors.toList());
}
}
你知道我做错了什么吗?
我找到了。
javax.faces.PARTIAL_STATE_SAVING
设置为 false
。如果我在 web.xml
中删除它,一切都会正常。
这个选项是在我加入项目之前设置的,我找不到任何解释为什么它设置为 false 的信息。