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