问题描述
我正在使用primefaces(6.2)数据表,而在使用列过滤器时,我观察到一个奇怪的行为,尽管所有列(带有outputText,inputText)都保留对象值,带有'selectOneMenu','selectBooleanCheckBox'的列不保留对象值并返回null,false。 仅在执行过滤器时发生的问题,并且文件管理器不返回任何行,如果过滤器返回至少一行,则所有内容看起来都正常,并且所有列均行为正常。请找到以下我要用来进行故障排除的代码段,非常感谢您为解决此问题所付出的努力。
XHTML
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:c="http://java.sun.com/jstl/core">
<h:body>
<h:form id="frmClientDetails">
<p:dataTable
value="#{myBean.lstContact}" var="varContact"
rowStyleClass="#{varContact.strRowCSS}">
<p:column width="180" headerText="Sal">
<p:selectOneMenu value="#{varContact.strSalutation}">
<f:selectItem itemLabel="--Select one--" itemValue=""></f:selectItem>
<f:selectItem itemLabel="DR" itemValue="DR"></f:selectItem>
<f:selectItem itemLabel="MISS" itemValue="MISS"></f:selectItem>
<f:selectItem itemLabel="MRS" itemValue="MRS"></f:selectItem>
<f:selectItem itemLabel="MR" itemValue="MR"></f:selectItem>
<f:selectItem itemLabel="MS" itemValue="MS"></f:selectItem>
</p:selectOneMenu>
</p:column>
<p:column width="200" filterBy="#{varContact.strFirstName}" headerText="First Name">
<p:inputText maxlength="2000" value="#{varContact.strFirstName}"/>
</p:column>
</p:dataTable>
</h:form>
</h:body>
</html>
ManagedBean
import java.util.ArrayList;
import java.util.List;
import javax.annotation.postconstruct;
import javax.inject.Named;
import org.springframework.context.annotation.Scope;
import com.model.Contact;
@Named("myBean")
@Scope("view")
public class MyBean extends BaseManagedBean {
private List<Contact> lstContact;
@postconstruct
public void init() {
lstContact = new ArrayList<Contact>();
Contact obj1 = new Contact();
obj1.setStrSalutation("MR");
obj1.setStrFirstName("AAA");
Contact obj2 = new Contact();
obj2.setStrFirstName("BBB");
Contact obj3 = new Contact();
obj3.setStrSalutation("MR");
obj3.setStrFirstName("CCC");
lstContact.add(obj1);
lstContact.add(obj2);
lstContact.add(obj3);
}
public List<Contact> getLstContact() {
return lstContact;
}
public void setLstContact(List<Contact> lstContact) {
this.lstContact = lstContact;
}
}
如果我仅在第二列(名字)过滤器中输入“ X”并删除“ X”,则第一列(Salutation)中的所有值都将消失。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)