Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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
Java 如何使用primefaces更新/删除mysql中的数据?_Java_Mysql - Fatal编程技术网

Java 如何使用primefaces更新/删除mysql中的数据?

Java 如何使用primefaces更新/删除mysql中的数据?,java,mysql,Java,Mysql,我有一个primefaces页面,其中显示了我来自mysql的数据。 表结构: +---------------------------+---------------+---------+ | id (PK, AUTO_INCREMENT) | name(Varchar) | age(int)| +---------------------------+---------------+---------+ 道: 公共类TestDAO{ 公共静态列表getAll()引发SQLExceptio

我有一个primefaces页面,其中显示了我来自mysql的数据。 表结构:

+---------------------------+---------------+---------+ | id (PK, AUTO_INCREMENT) | name(Varchar) | age(int)| +---------------------------+---------------+---------+ 道:

公共类TestDAO{
公共静态列表getAll()引发SQLException{
列表=新的ArrayList();
Connection con=Database.getConnection();
语句st=con.createStatement();
结果集rs=st.executeQuery(“从U测试中选择*);
while(rs.next()){
TestModel TestModel=新的TestModel();
testModel.setName(rs.getString(“name”);
testModel.setAge(rs.getInt(“age”);
setId(rs.getLong(“id”);
添加(testModel);
}
退货清单;
}
公共静态void insert(TestModel TestModel)引发SQLException{
Connection con=Database.getConnection();
PreparedStatement ps=con.prepareStatement(“插入到a_测试(名称、年龄)值(?,)”;
ps.setString(1,testModel.getName());
ps.setInt(2,testModel.getAge());
ps.executeUpdate();
}
公共静态void更新(TestModel TestModel)引发SQLException{
Connection con=Database.getConnection();
PreparedStatement ps=con.prepareStatement(“更新测试集名称=?,年龄=?,其中id=?”;
ps.setString(1,testModel.getName());
ps.setInt(2,testModel.getAge());
setLong(3,testModel.getId());
ps.executeUpdate();
}
公共静态void delete(长id)引发SQLException{
Connection con=Database.getConnection();
PreparedStatement ps=con.prepareStatement(“从测试中删除,其中id=?”);
ps.setLong(1,id);
ps.executeUpdate();
}
}
控制器:

@ManagedBean(name="test")
@RequestScoped
public class TestController implements Serializable{
    private TestModel testModel;
    private List<TestModel> testModelList;

    public TestController() {
        testModel = new TestModel();
    }

    public TestModel getTestModel() {
        return testModel;
    }

    public void setTestModel(TestModel testModel) {
        this.testModel = testModel;
    }

    public List<TestModel> getTestModelList() {
        return testModelList;
    }

    public void setTestModelList(List<TestModel> testModelList) {
        this.testModelList = testModelList;
    }

    public void update() throws SQLException {
        TestDAO.update(testModel);
    }

    public void insert() throws SQLException {
        TestDAO.insert(testModel);
    }

    public List<TestModel> getAll() throws SQLException {
        return TestDAO.getAll();
    }

    public void delete() throws SQLException {
        TestDAO.delete(testModel.getId());
    }
}
@ManagedBean(name=“test”)
@请求范围
公共类TestController实现可序列化{
私有测试模型;
私有列表testModelList;
公共测试控制器(){
testModel=新的testModel();
}
公共测试模型getTestModel(){
返回测试模型;
}
公共void setTestModel(TestModel TestModel){
this.testModel=testModel;
}
公共列表getTestModelList(){
返回testModelList;
}
公共void setTestModelList(列表testModelList){
this.testModelList=testModelList;
}
public void update()引发SQLException{
update(testModel);
}
public void insert()引发SQLException{
insert(testModel);
}
public List getAll()引发SQLException{
返回TestDAO.getAll();
}
public void delete()引发SQLException{
delete(testModel.getId());
}
}
test.xhtml:

 <h:form id="form1">
    <p:panel id="panel" header="Add new person" style="margin-bottom:10px;">
        <p:messages id="messages" />
        <h:panelGrid columns="2" cellpadding="5">
            <p:outputLabel  for="a1" value="Name: " />
            <p:inputText  id="a1" value="#{test.testModel.name}"/>

            <p:outputLabel for="a2" value="Age: " />
            <p:inputText id="a2" value="#{test.testModel.age}"/>
        </h:panelGrid>
    </p:panel>

    <p:toolbar>
        <f:facet name="left">
            <p:commandButton value="Add"  update="form1" action="#{test.insert()}"/>
        </f:facet>
    </p:toolbar>

    <p:spacer height="30px;"/>

    <p:dataTable value="#{test.getAll()}" var="e"  widgetVar="50" editable="true" >
        <f:facet name="header">
           Persons
        </f:facet>

        <p:ajax event="rowEdit" listener="#{test.update()}" update=":form1:messages" />
        <p:ajax event="rowEditCancel" listener="#{test.delete()}" update=":form1:messages" />

        <p:column>
            <f:facet name="header">
                <h:outputText value="Name" />
            </f:facet>
            <p:cellEditor>
                <f:facet name="output">
                    <h:outputText value="#{e.name}" />
                </f:facet>
                <f:facet name="input">
                    <p:inputText value="#{e.name}" style="width:100%"/>
                </f:facet>
            </p:cellEditor>
        </p:column>

        <p:column>
            <f:facet name="header">
                <h:outputText value="Age" />
            </f:facet>
            <p:cellEditor>
                <f:facet name="output">
                    <h:outputText value="#{e.age}" />
                </f:facet>
                <f:facet name="input">
                    <p:inputText value="#{e.age}" style="width:100%"/>
                </f:facet>
            </p:cellEditor>
        </p:column>

        <p:column headerText="" style="width:50px">
            <p:rowEditor />
        </p:column>
    </p:dataTable>
    </h:form>

珀森斯

如何修复它?

PrimeFaces不会更新数据库中的任何位置。您的代码会这样做(或容器或…),因此这与PrimeFaces无关(test.update()是您的代码)可能与我知道的空指针异常重复,我问为什么为空?我能做些什么来修复呢?你检查过刀豆的范围了吗?
@ManagedBean(name="test")
@RequestScoped
public class TestController implements Serializable{
    private TestModel testModel;
    private List<TestModel> testModelList;

    public TestController() {
        testModel = new TestModel();
    }

    public TestModel getTestModel() {
        return testModel;
    }

    public void setTestModel(TestModel testModel) {
        this.testModel = testModel;
    }

    public List<TestModel> getTestModelList() {
        return testModelList;
    }

    public void setTestModelList(List<TestModel> testModelList) {
        this.testModelList = testModelList;
    }

    public void update() throws SQLException {
        TestDAO.update(testModel);
    }

    public void insert() throws SQLException {
        TestDAO.insert(testModel);
    }

    public List<TestModel> getAll() throws SQLException {
        return TestDAO.getAll();
    }

    public void delete() throws SQLException {
        TestDAO.delete(testModel.getId());
    }
}
 <h:form id="form1">
    <p:panel id="panel" header="Add new person" style="margin-bottom:10px;">
        <p:messages id="messages" />
        <h:panelGrid columns="2" cellpadding="5">
            <p:outputLabel  for="a1" value="Name: " />
            <p:inputText  id="a1" value="#{test.testModel.name}"/>

            <p:outputLabel for="a2" value="Age: " />
            <p:inputText id="a2" value="#{test.testModel.age}"/>
        </h:panelGrid>
    </p:panel>

    <p:toolbar>
        <f:facet name="left">
            <p:commandButton value="Add"  update="form1" action="#{test.insert()}"/>
        </f:facet>
    </p:toolbar>

    <p:spacer height="30px;"/>

    <p:dataTable value="#{test.getAll()}" var="e"  widgetVar="50" editable="true" >
        <f:facet name="header">
           Persons
        </f:facet>

        <p:ajax event="rowEdit" listener="#{test.update()}" update=":form1:messages" />
        <p:ajax event="rowEditCancel" listener="#{test.delete()}" update=":form1:messages" />

        <p:column>
            <f:facet name="header">
                <h:outputText value="Name" />
            </f:facet>
            <p:cellEditor>
                <f:facet name="output">
                    <h:outputText value="#{e.name}" />
                </f:facet>
                <f:facet name="input">
                    <p:inputText value="#{e.name}" style="width:100%"/>
                </f:facet>
            </p:cellEditor>
        </p:column>

        <p:column>
            <f:facet name="header">
                <h:outputText value="Age" />
            </f:facet>
            <p:cellEditor>
                <f:facet name="output">
                    <h:outputText value="#{e.age}" />
                </f:facet>
                <f:facet name="input">
                    <p:inputText value="#{e.age}" style="width:100%"/>
                </f:facet>
            </p:cellEditor>
        </p:column>

        <p:column headerText="" style="width:50px">
            <p:rowEditor />
        </p:column>
    </p:dataTable>
    </h:form>