Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.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
如何编辑数据表';s行(JAVA+;Primefaces+;JSF+;MYSQL)_Java_Mysql_Jsf 2_Primefaces_Dialog - Fatal编程技术网

如何编辑数据表';s行(JAVA+;Primefaces+;JSF+;MYSQL)

如何编辑数据表';s行(JAVA+;Primefaces+;JSF+;MYSQL),java,mysql,jsf-2,primefaces,dialog,Java,Mysql,Jsf 2,Primefaces,Dialog,我有一个datatable页面(Java+JSF+PRIMEFACES+OracleGlassFishServer3.1.2.2+MYSQL)。当我在页面中指定行并单击“显示”按钮时,您可以在弹出窗口中看到: 当我试图编辑行时,我单击编辑 问题从这里开始,当我单击复选标记时,行消失: 我在服务器日志中看到: ThreadName=Thread-2|javax.faces.model.NoRowAvailableException javax.faces.model.NoRowAvailab

我有一个datatable页面(Java+JSF+PRIMEFACES+OracleGlassFishServer3.1.2.2+MYSQL)。当我在页面中指定行并单击“显示”按钮时,您可以在弹出窗口中看到:

当我试图编辑行时,我单击编辑

问题从这里开始,当我单击复选标记时,行消失:

我在服务器日志中看到:

ThreadName=Thread-2|javax.faces.model.NoRowAvailableException javax.faces.model.NoRowAvailableException 位于javax.faces.model.ListDataModel.getRowData(ListDataModel.java:150) 位于javax.faces.component.UIData.getRowData(UIData.java:371) 位于org.primefaces.component.datatable.datatable.queueEvent(datatable.java:620) 位于org.primefaces.component.behavior.ajax.AjaxBehaviorRenderer.decode(AjaxBehaviorRenderer.java:44) 位于javax.faces.component.behavior.ClientBehaviorBase.decode(ClientBehaviorBase.java:132) 位于org.primefaces.renderkit.CoreRenderer.decodeBehaviors(corerender.java:395) 位于org.primefaces.component.datatable.DataTableRenderer.decode(DataTableRenderer.java:64) 位于javax.faces.component.UIComponentBase.decode(UIComponentBase.java:787) 位于org.primefaces.component.api.UIData.processDecodes(UIData.java:232) 访问com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:506) 访问com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183) 位于org.primefaces.component.api.UIData.visitTree(UIData.java:675) 位于javax.faces.component.UIComponent.visitTree(UIComponent.java:1601) 位于javax.faces.component.UIComponent.visitTree(UIComponent.java:1601) 位于javax.faces.component.UIForm.visitTree(UIForm.java:344) 位于javax.faces.component.UIComponent.visitTree(UIComponent.java:1601) 位于com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:376) 位于com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:252) 位于org.primefaces.context.PrimePartialViewContext.processPartial(PrimePartialViewContext.java:57) 位于javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:931) 在com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78) 位于com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 在com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)上 位于javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) 位于org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550) 位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) 位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 位于org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) 位于org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) 位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) 位于org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) 位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) 位于com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317) 位于com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) 位于com.sun.grizzly.http.ProcessorTask.InvokeApter(ProcessorTask.java:860) 在com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757) 位于com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056) 位于com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229) 位于com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) 在com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)上 在com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)上 http.HttpProtocolChain.execute(HttpProtocolChain.java:79) 位于com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) 在com.sun.grizzly.SelectionKeyContextTask.call上(SelectionKeyContextTask.java:59) 位于com.sun.grizzly.ContextTask.run(ContextTask.java:71) 位于com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) 位于com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) 在java.lang.Thread.run(Thread.java:724)|#]

这是我的页面:

<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:ui="http://java.sun.com/jsf/facelets" 
      xmlns:p="http://primefaces.org/ui"
      >

    <h:head>    
            <title>Teszt</title>        
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>                        
            <link rel="stylesheet" type="text/css" href="style.css"/>            
    </h:head>

    <ui:debug />
    <h:form id="form">
        <p:fieldset legend="Teszt:">
            <p:dataTable id="dataTableTeszt" value="#{TesztBean.values}" var="c" paginator="true" rows="25" editable="true" filteredValue="#{TesztBeanBean.filteredOsszesito}" scrollable="true" scrollWidth="1500" scrollHeight="550"
                        paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
                        paginatorPosition="bottom" rowsPerPageTemplate="5,10,15,20,30,40,50" 
                        selectionMode="multiple" selection="#{TesztBean.selectList}" rowKey="#{c.id}">

                        <p:column selectionMode="multiple" style="width:2%;text-align:center"/>

                        <p:column style="width: 130px; text-align: center" filterBy="#{c.id}" filterMatchMode="contains">
                            <f:facet name="header">ID:</f:facet>                                
                            <h:outputText value="#{c.id}" style="width: 130px; text-align: center"/>                                                
                        </p:column>


                        <p:column style="width: 130px; text-align: center" filterBy="#{c.name}" filterMatchMode="contains">
                            <f:facet name="header">Name:</f:facet>                                                                                                        
                            <h:outputText value="#{c.name}" style="width: 130px; text-align: center"/>                            
                        </p:column>

                        <p:column style="width: 130px; text-align: center" filterBy="#{c.age}" filterMatchMode="contains" >
                            <f:facet name="header">Age:</f:facet>                                                                                                        
                            <h:outputText value="#{c.age}" style="width: 130px; text-align: center"/>                            
                        </p:column>    


                        <p:column style="width: 230px; text-align: center" filterBy="#{c.kapcsolatfelvetel_megtortent}" filterMatchMode="contains" >
                            <f:facet name="header">Kapcsolatfelvétel megtörtént:</f:facet>                                                                                                        
                            <h:outputText value="#{c.kapcsolatfelvetel_megtortent}" style="width: 230px; text-align: center"/>                                
                        </p:column>               

                        <p:column style="width: 230px; text-align: center" filterBy="#{c.levelkuldesenek_datuma}" filterMatchMode="contains" >
                            <f:facet name="header">Levélküldés dátuma:</f:facet>                                                                                                        
                            <h:outputText value="#{c.levelkuldesenek_datuma}" style="width: 230px; text-align: center"/>                            
                        </p:column>

                        <p:column style="width: 230px; text-align: center" filterBy="#{c.kepzes_kezdete}" filterMatchMode="contains" >
                            <f:facet name="header">Képzés kezdete:</f:facet>
                            <h:outputText value="#{c.kepzes_kezdete}" style="width: 230px; text-align: center"/>                            
                        </p:column>

                        <p:column style="width: 230px; text-align: center" filterBy="#{c.kepzes_vege}" filterMatchMode="contains" >
                            <f:facet name="header">Képzés vege:</f:facet>
                            <h:outputText value="#{c.kepzes_vege}" style="width: 230px; text-align: center"/>                            
                        </p:column>

                        <p:column style="width: 1000px; text-align: center" filterBy="#{c.magyarazat}" filterMatchMode="contains">
                            <f:facet name="header">Megjegyzés:</f:facet>
                            <h:outputText value="#{c.magyarazat}" style="width: 1000px; text-align: center"/>                            
                        </p:column>   
                        <f:facet name="footer">                            
                            <p:commandButton id="addCategoryButton" value="Show" oncomplete="categoryDialog.show();" update=":form:dataTableTesztDialog :form:categoryDialog"/>
                        </f:facet>
        </p:dataTable>  
        </p:fieldset>

        <p:dialog id="categoryDialog" header="Category Detail" widgetVar="categoryDialog" closeOnEscape="true" resizable="false" style="width:1000px; height: 500px;" showEffect="explode" hideEffect="bounce">          
            <p:dataTable id="dataTableTesztDialog" value="#{TesztBean.selectList}" var="d" paginator="true" rows="25" editable="true">

                    <p:ajax event="rowEdit" listener="#{TesztBean.update(event)}"/>

                    <p:column style="width: 60px; text-align: center" headerText="Edit">
                        <p:rowEditor />
                    </p:column>

                    <p:column style="width: 130px; text-align: center">
                            <f:facet name="header">ID:</f:facet>                                                
                            <p:cellEditor>
                                <f:facet name="output">
                                    <h:outputText value="#{d.id}" style="width: 130px; text-align: center"/>
                                </f:facet>
                                <f:facet name="input">
                                    <p:inputText value="#{d.id}"/>
                                </f:facet>
                            </p:cellEditor>
                    </p:column>

                    <p:column style="width: 230px; text-align: center">
                        <f:facet name="header">Kapcsolatfelvétel megtörtént:</f:facet>                                                
                        <p:cellEditor>
                            <f:facet name="output">
                                <h:outputText value="#{d.kapcsolatfelvetel_megtortent}" style="width: 230px; text-align: center"/>
                            </f:facet>
                            <f:facet name="input">
                                <p:inputText value="#{d.kapcsolatfelvetel_megtortent}"/>
                            </f:facet>
                        </p:cellEditor>
                    </p:column>               

                        <p:column style="width: 230px; text-align: center">
                            <f:facet name="header">Levélküldés dátuma:</f:facet>                                                
                            <p:cellEditor>
                                <f:facet name="output">
                                    <h:outputText value="#{d.levelkuldesenek_datuma}" style="width: 230px; text-align: center"/>
                                </f:facet>
                                <f:facet name="input">
                                    <p:inputText value="#{d.levelkuldesenek_datuma}"/>
                                </f:facet>
                            </p:cellEditor>
                        </p:column>

                        <p:column style="width: 230px; text-align: center">
                            <f:facet name="header">Képzés kezdete:</f:facet>                                                
                            <p:cellEditor>
                                <f:facet name="output">
                                    <h:outputText value="#{d.kepzes_kezdete}" style="width: 230px; text-align: center"/>
                                </f:facet>
                                <f:facet name="input">
                                    <p:inputText value="#{d.kepzes_kezdete}"/>
                                </f:facet>
                            </p:cellEditor>
                        </p:column>

                        <p:column style="width: 230px; text-align: center">
                            <f:facet name="header">Képzés vege:</f:facet>                                                
                            <p:cellEditor>
                                <f:facet name="output">
                                    <h:outputText value="#{d.kepzes_vege}" style="width: 230px; text-align: center"/>
                                </f:facet>
                                <f:facet name="input">
                                    <p:inputText value="#{d.kepzes_vege}"/>
                                </f:facet>
                            </p:cellEditor>
                        </p:column>

                        <p:column style="width: 350px; text-align: center">
                            <f:facet name="header">Megjegyzés:</f:facet>                                                
                            <p:cellEditor>
                                <f:facet name="output">
                                    <h:outputText value="#{d.magyarazat}" style="width: 350px; text-align: center"/>
                                </f:facet>
                                <f:facet name="input">
                                    <p:inputText value="#{d.magyarazat}"/>
                                </f:facet>
                            </p:cellEditor>
                        </p:column>
                </p:dataTable>        
        </p:dialog>


    </h:form> 

</html>
如何正确编辑行


非常感谢,

首先,您必须了解范围的类型:

  • 请求
  • 视图
  • 会议
  • 应用程序
作用域是数据的生命周期,您只能使用一个,代码中有两个作用域:

@SessionScoped
@ViewScoped
我建议您使用ViewScoped,但您需要考虑数据的可用时间,如果选择ViewScoped,则在不更改视图或页面的情况下数据将可用;如果选择SessionScoped,则在不注销的情况下数据将可用

现在,您必须更新表的列表。你有:

<p:dataTable id="dataTableTeszt" value="#{TesztBean.values}" var="c" paginator="true" rows="25" editable="true" filteredValue="#{TesztBeanBean.filteredOsszesito}" scrollable="true" scrollWidth="1500" scrollHeight="550"
                        paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
                        paginatorPosition="bottom" rowsPerPageTemplate="5,10,15,20,30,40,50" 
                        selectionMode="multiple" selection="#{TesztBean.selectList}" rowKey="#{c.id}">
我不知道你怎么做,但是你可以看到primefaces网站,有一些关于这个的例子,想法是更新你表格的主列表,在你的例子中的值列表

我希望这些信息对你有帮助

祝你好运

附言。
如果我的英语不好,我愿意接受评论=P

首先,您必须了解范围的类型:

  • @SessionScoped @ViewScoped
    <p:dataTable id="dataTableTeszt" value="#{TesztBean.values}" var="c" paginator="true" rows="25" editable="true" filteredValue="#{TesztBeanBean.filteredOsszesito}" scrollable="true" scrollWidth="1500" scrollHeight="550"
                            paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
                            paginatorPosition="bottom" rowsPerPageTemplate="5,10,15,20,30,40,50" 
                            selectionMode="multiple" selection="#{TesztBean.selectList}" rowKey="#{c.id}">
    
    public void update(RowEditEvent event) {
    
            TesztSetGet edittedObject = (TesztSetGet) event.getObject();        
    
            Connection connection = null;
            PreparedStatement pst = null;
            ResultSet rs = null;
    
            String sql = "update teszt set kapcsolatfelvetel_megtortent=?, levelkuldes_datuma=?, kepzes_kezdete=?, kepzes_vege=?, megjegyzes=?  where id=?";
    
            try{
    
                connection = getDBConnection();                                                                       
                pst = connection.prepareStatement(sql);
    
    
    
                pst.setString(1, edittedObject.getKapcsolatfelvetel_megtortent());
                pst.setString(2, edittedObject.getLevelkuldesenek_datuma());
                pst.setString(3, edittedObject.getKepzes_kezdete());
                pst.setString(4, edittedObject.getKepzes_vege());
                pst.setString(5, edittedObject.getMagyarazat());
                pst.setInt(6, edittedObject.getId());
    
                pst.executeUpdate();
                pst.close();
                connection.close();
    
                //UPDATE VALUES LIST WITH NEW DATA
    
            }catch(SQLException se){
                se.printStackTrace();
                se.getMessage();
             }catch(Exception e){
                 e.printStackTrace();
                 e.getMessage();
             }    
    
    
        }