Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf primefaces升级--数据表不工作_Jsf_Primefaces_Tomcat7_Cdi - Fatal编程技术网

Jsf primefaces升级--数据表不工作

Jsf primefaces升级--数据表不工作,jsf,primefaces,tomcat7,cdi,Jsf,Primefaces,Tomcat7,Cdi,最近我将我的项目从primefaces 3.3.1升级到了3.4.1。除惰性数据模型外,其余所有项目都运行良好。我需要做任何额外的更改吗 我的xhtml代码: <h:panelGroup id="clsTablePanel"> <p:dataTable var="cls" value="#{classesBean.classModel}" sortBy="#{cls.classId}" sortOrder="descen

最近我将我的项目从primefaces 3.3.1升级到了3.4.1。除惰性数据模型外,其余所有项目都运行良好。我需要做任何额外的更改吗

我的xhtml代码:

 <h:panelGroup id="clsTablePanel">
            <p:dataTable var="cls" value="#{classesBean.classModel}"
                sortBy="#{cls.classId}" sortOrder="descending"
                selectionMode="single" selection="#{classesBean.selectedClass}"
                paginator="true" rows="5" paginatorAlwaysVisible="false"
                paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"
                lazy="true" widgetVar="clsTable" style="width:auto;margin:10px;">
                <p:ajax event="rowSelect" listener="#{classesBean.classRowSelect}"
                    update=":mainTab:clsDetailPanel" />
                <f:facet name="header">
                    <h:outputText value="#{titles.classList}" />
                </f:facet>

                <p:column headerText="Class Id" sortBy="#{cls.classId}"
                    style="width:10%;">
                #{cls.classId}
            </p:column>
                <p:column headerText="Class" sortBy="#{cls.className}"
                    style="width:10%;">
                #{cls.className}
            </p:column>
                <p:column headerText="Coordinator" style="width:20%;">
                #{cls.mtmdemployees.firstName}
            </p:column>
                <p:column headerText="Location" style="width:20%;">
                #{cls.mtmdlocation.locShortName}
            </p:column>

            </p:dataTable>
        </h:panelGroup>
    </div>
    <div>
        <p:outputPanel id="clsDetailPanel">

            <h:form>
                <p:messages id="clsmsgs" style="width:98%;margin:5px auto;" />
                <p:panelGrid columns="4" style="width:98%;margin:5px auto;">
                    <f:facet name="header">
                        <h:outputText value="#{titles.classinfo}"></h:outputText>
                    </f:facet>

                    <h:outputText value="ClassId"></h:outputText>
                    <p:inputText value="#{classesBean.selectedClass.classId}"
                        disabled="true" />

                    <h:outputText value="Class Name"></h:outputText>
                    <p:inputText value="#{classesBean.selectedClass.className}"
                        required="true" requiredMessage="Enter Class Name" />

                    <h:outputText value="Coordinator"></h:outputText>
                    <p:selectOneMenu value="#{classesBean.selectedEmployeeId}"
                        style="height:20px;">
                        <f:selectItems value="#{classesBean.employeesList}" var="emp"
                            itemLabel="#{emp.firstName}" itemValue="#{emp.employeeId}" />
                    </p:selectOneMenu>


                    <h:outputText value="Location"></h:outputText>
                    <p:selectOneMenu value="#{classesBean.selectedLocationId}">
                        <f:selectItems value="#{classesBean.locationList}" var="loc"
                            itemLabel="#{loc.locShortName}" itemValue="#{loc.locationId}" />
                    </p:selectOneMenu>

                    <f:facet name="footer">
                        <p:commandButton widgetVar="updateBt" value="Update"
                            action="#{classesBean.classesUpdate}" ajax="true" process="@form"
                            update="clsmsgs :mainTab:clsTablePanel"
                            disabled="#{classesBean.updateDisable}"
                            style="margin-left:5px;margin-right:5px;" />
                        <p:commandButton widgetVar="createBt" value="Create"
                            action="#{classesBean.classesCreate}" ajax="true" process="@form"
                            update="clsmsgs :mainTab:clsTablePanel"
                            disabled="#{classesBean.createDisable}"
                            style="margin-left:5px;margin-right:5px;" />
                        <p:commandButton widgetVar="clearBt" value="Clear"
                            action="#{classesBean.classesClear}" ajax="true" process="@none"
                            update="@form" oncomplete="clsTable.unselectAllRows()"
                            style="margin-left:5px;margin-right:5px;" />
                    </f:facet>

                </p:panelGrid>
            </h:form>
        </p:outputPanel>

#{cls.classId}
#{cls.className}
#{cls.mtmdemployees.firstName}
#{cls.mtmdlocation.locShortName}
我的惰性数据模型代码:

@Named
@WindowScoped
public class ClassLazyDataModel extends LazyDataModel<Mtmdclass> implements
        Serializable {

    static final long serialVersionUID = 12l;
    private static final Log log = LogFactory.getLog(ClassLazyDataModel.class);

    @Inject
    private HibernateUtil hibernateUtil;

    @Inject
    MtmdclassHome clsHome;

    private List<Mtmdclass> clsList = new ArrayList<Mtmdclass>();

    public ClassLazyDataModel() {
    }

    @PostConstruct
    public void init() {
        setDataModelSize();
    }

    public void setDataModelSize() {
        try {
            hibernateUtil.beginTransaction();               
            Long count = clsHome.getClassCount();
            this.setRowCount(count.intValue());
            hibernateUtil.commitTransaction();
            log.debug("Row Count:" + count);
        } catch (Exception ex) {
            if (hibernateUtil.isTransactionActive())
                hibernateUtil.rollbackTransaction();
            log.error("Exception getting employee row count" + ex);
            FacesContext.getCurrentInstance().addMessage(
                    null,
                    new FacesMessage(FacesMessage.SEVERITY_ERROR,
                            "Error getting employee row count",
                            "Error getting employee row count"));
        }
    }

    @SuppressWarnings("unchecked")
    @Override
    public Mtmdclass getRowData(String rowKey) {
        List<Mtmdclass> clsrows = (List<Mtmdclass>) getWrappedData();
        for (Mtmdclass cls : clsrows) {
            if (rowKey.equals((cls.getClassId()).toString()))
                return cls;
        }
        return null;
    }

    @Override
    public Object getRowKey(Mtmdclass cls) {
        log.debug("in getRowKey:classId" + cls.getClassId());
        return cls.getClassId();
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<Mtmdclass> load(int first, int pageSize, String sortField,
            SortOrder sortOrder, Map<String, String> filters) {
        log.debug("First:" + first + " PageSige:" + pageSize + " SortField:"
                + sortField + " SortOrder:" + sortOrder);
        try {
            // MtmdclassHome clsHome = new MtmdclassHome();
            hibernateUtil.beginTransaction();
            clsList = clsHome.lazyLoad(first, pageSize, sortField, sortOrder);
            for (Mtmdclass cls : clsList) {
                Hibernate.initialize(cls.getMtmdlocation());
                Hibernate.initialize(cls.getMtmdemployees());
            }
            hibernateUtil.commitTransaction();
            log.debug("in load: class Row Count: " + clsList.size());
        } catch (Exception ex) {
            if (hibernateUtil.isTransactionActive())
                hibernateUtil.rollbackTransaction();
            log.error("Exception fetching Employee List" + ex);
            FacesContext.getCurrentInstance()
                    .addMessage(
                            null,
                            new FacesMessage(FacesMessage.SEVERITY_ERROR,
                                    "Error Getting Students",
                                    "Error Getting Students"));
        }
        return clsList;
    }
}
@Named
@窗镜
公共类ClassLazyDataModel扩展了LazyDataModel实现
可序列化{
静态最终长serialVersionUID=12l;
私有静态最终日志Log=LogFactory.getLog(ClassLazyDataModel.class);
@注入
私人冬眠;
@注入
MtmdclassHome-clsHome;
private List clsList=new ArrayList();
公共类lazydatamodel(){
}
@施工后
公共void init(){
setDataModelSize();
}
public void setDataModelSize(){
试一试{
hibernateUtil.beginTransaction();
Long count=clsHome.getClassCount();
this.setRowCount(count.intValue());
hibernateUtil.commitTransaction();
log.debug(“行计数:”+Count);
}捕获(例外情况除外){
if(hibernateUtil.isTransactionActive())
hibernateUtil.rollbackTransaction();
log.error(“获取员工行计数异常”+ex);
FacesContext.getCurrentInstance().addMessage(
无效的
新FacesMessage(FacesMessage.SEVERITY_错误,
“获取员工行计数时出错”,
“获取员工行计数时出错”);
}
}
@抑制警告(“未选中”)
@凌驾
公共Mtmdclass getRowData(字符串rowKey){
List clsrows=(List)getWrappedData();
用于(Mtmdclass cls:clsrows){
if(rowKey.equals((cls.getClassId()).toString())
返回cls;
}
返回null;
}
@凌驾
公共对象getRowKey(Mtmdclass cls){
调试(“在getRowKey:classId中”+cls.getClassId());
返回cls.getClassId();
}
@抑制警告(“未选中”)
@凌驾
公共列表加载(int first,int pageSize,String sortField,
排序器(排序器、映射过滤器){
log.debug(“第一个:”+First+“PageSige:”+pageSize+“SortField:”
+sortField+“SortOrder:”+SortOrder);
试一试{
//MtmdclassHome clsHome=新的MtmdclassHome();
hibernateUtil.beginTransaction();
clsList=clsHome.lazyLoad(第一个,pageSize,sortField,sortOrder);
用于(Mtmdclass cls:clsList){
初始化(cls.getMtmdlocation());
初始化(cls.getMtmdemployees());
}
hibernateUtil.commitTransaction();
debug(“加载中:类行计数:”+clsList.size());
}捕获(例外情况除外){
if(hibernateUtil.isTransactionActive())
hibernateUtil.rollbackTransaction();
日志错误(“异常获取员工列表”+ex);
FacesContext.getCurrentInstance()
.addMessage(
无效的
新FacesMessage(FacesMessage.SEVERITY_错误,
“获取学生时出错”,
“获取学生时出错”);
}
返回clsList;
}
}
我的豆子

@Inject
    ClassLazyDataModel classLDM;
private LazyDataModel<Mtmdclass> classModel;

public void loadClassesModel() {
        classModel = classLDM;
    }

            public void classRowSelect() {
                    oldEmpId = selectedClass.getMtmdemployees().getEmployeeId();

                    if (selectedClass.getMtmdemployees() != null) {
                        setSelectedEmployeeId(selectedClass.getMtmdemployees()
                                .getEmployeeId());
                    }
                    if (selectedClass.getMtmdlocation() != null) {
                        setSelectedLocationId(selectedClass.getMtmdlocation()
                                .getLocationId());
                    }
                    updateDisable = Boolean.FALSE;
                    createDisable = Boolean.TRUE;
                }

        public Mtmdclass getSelectedClass() {
                return selectedClass;
            }

            public void setSelectedClass(Mtmdclass selectedClass) {
                this.selectedClass = selectedClass;
            }
    public LazyDataModel<Mtmdclass> getClassModel() {
            return classModel;
        }

        public void setClassModel(LazyDataModel<Mtmdclass> classModel) {
            this.classModel = classModel;
        }
@Inject
ClassLazyDataModelClassLDM;
私有LazyDataModel类模型;
公共void loadClassesModel(){
classModel=classLDM;
}
public void classRowSelect(){
oldEmpId=selectedClass.getMtmdemployees().getEmployeeId();
if(selectedClass.getMtmdemployees()!=null){
设置SelectedEmployeeId(selectedClass.getMtmdemployees()
.getEmployeeId());
}
if(selectedClass.getMtmdlocation()!=null){
setSelectedLocationId(selectedClass.getMtmdlocation()
.getLocationId());
}
updateDisable=Boolean.FALSE;
createDisable=Boolean.TRUE;
}
公共Mtmdclass getSelectedClass(){
返回selectedClass;
}
公共无效集合selectedClass(Mtmdclass selectedClass){
this.selectedClass=selectedClass;
}
公共LazyDataModel getClassModel(){
返回类模型;
}
public void setClassModel(LazyDataModel classModel){
this.classModel=classModel;
}

这可能与3.4中的部分ajax行为更改有关。下面是3.4迁移指南中的

partialSubmit is now false by default. It can be globally configured using primefaces.SUBMIT context parameter and components can override the global setting with provided partialSubmit attribute

尝试将web.xml中的primefaces.SUBMIT设置为true,然后查看是否解决了此问题。

是否尝试:@johny当我调试代码时,我发现LazyDataModel的getRowData()返回了该对象。其中,正如在bean中一样,它显示为Null。所以我瘦了