Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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代码表示1行受影响(Primefaces)_Java_Jakarta Ee_Primefaces_Jsf 2 - Fatal编程技术网

数据库记录未更新,但java代码表示1行受影响(Primefaces)

数据库记录未更新,但java代码表示1行受影响(Primefaces),java,jakarta-ee,primefaces,jsf-2,Java,Jakarta Ee,Primefaces,Jsf 2,我不熟悉J2EE,我正在尝试执行Crud操作。但是我被困在更新方法中 我将EJB用于服务器(数据库)和jsf primefaces用于客户端 问题是,每当我点击editajaxevent时,它就会将我的行变为input text,这是正确的,之后当我编辑字段时,我会按ok更新行,但它不会 这就是我到目前为止所做的 xhtmlcode: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DT

我不熟悉
J2EE
,我正在尝试执行
Crud
操作。但是我被困在
更新方法中

我将
EJB
用于
服务器(数据库)
jsf primefaces
用于
客户端

问题是,每当我点击
editajaxevent
时,它就会将我的行变为
input text
,这是正确的,之后当我编辑字段时,我会按
ok
更新行,但它不会

这就是我到目前为止所做的

xhtml
code:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core" xml:lang="en" lang="en"
    xmlns:p="http://primefaces.org/ui">
<h:head>
    <title>JSF 2.x Page</title>
    <meta http-equiv="keywords" content="enter,your,keywords,here" />
    <meta http-equiv="description"
        content="A short description of this page." />
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />

    <!--<link rel="stylesheet" type="text/css" href="styles.css">-->
</h:head>
<h:body>
<h:form id="form">
   <p:growl id="msgs" showDetail="true"/>

   <p:dataTable id="rec1" var="item"  value="#{first.list}" paginator="true" editable="true" style="width:550px;" >
       <f:facet name="header">
           Personal Record
       </f:facet>

       <p:ajax event="rowEdit" listener="#{first.onRowEdit}" update=":form:msgs" />
       <p:ajax event="rowEditCancel" listener="#{first.onRowCancel}" update=":form:msgs" />


       <p:column headerText="Id">
           <p:cellEditor>
               <f:facet name="output"><h:outputText value="#{item.id}" /></f:facet>
               <f:facet name="input"><p:inputText id="modelInput" value="#{item.id}" style="width:100%"/></f:facet>
           </p:cellEditor>
       </p:column>

       <p:column headerText="First Name">
           <p:cellEditor>
               <f:facet name="output"><h:outputText value="#{item.fname}" /></f:facet>
               <f:facet name="input"><p:inputText value="#{item.fname}" style="width:100%" label="First Names"/></f:facet>
           </p:cellEditor>
       </p:column>

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


       <p:column headerText="Delete">

           <p:commandButton icon="ui-icon-close" title="Delete"
                           actionListener="#{first.removeUser(item)}" update="rec1" />
      </p:column>

       <p:column style="width:32px">
           <p:rowEditor />
       </p:column>


  </p:dataTable>

   <br/>

   <br/>
   <br/>

   <p id="hello">
First Name:
            <p:inputText value="#{first.fname}"></p:inputText>
            <br /> Last Name:
             <p:inputText value="#{first.lname}"></p:inputText>
            <br /> 
    <p:growl id="growl" life="5000" />
   <p:commandButton value="Insert" update="rec1" action="#{first.add}"></p:commandButton>

    <br /><h:messages id="test"></h:messages>
</p>






</h:form>
</h:body>
</html>
这是我的
EJB
项目
bean
文件,我在其中编写了所有查询

public void saveUser(int id, String fname, String lname) {
        System.out.println("recieveing records: "+id+fname+lname);
        String query = "UPDATE user SET fname='"+fname+"', lname='"+lname+"' where id= "+id;
//int output=em.createNativeQuery(query.executeUpdate()

注意:这个东西适用于
update
,但我不想使用它


您听说过SQL注入吗?永远不要在查询字符串中添加用户可以修改的字符串!谢谢你的建议:)为什么你不想使用有效的方法?使用em是正确的方法,您正在避免使用它进行注入。因为,我想学习其他方法。看看这个:您可以找到一些保存方法(除了使用em之外)来更新您的数据库。您听说过SQL注入吗?永远不要在查询字符串中添加用户可以修改的字符串!谢谢你的建议:)为什么你不想使用有效的方法?使用em是正确的方法,您正在避免使用它进行注入。因为,我想学习其他方法。看看这个:您可以找到一些保存方法(除了使用em)来更新您的数据库。
public void saveUser(int id, String fname, String lname) {
        System.out.println("recieveing records: "+id+fname+lname);
        String query = "UPDATE user SET fname='"+fname+"', lname='"+lname+"' where id= "+id;
//      User user= em.find(User.class, id);
//      user.setFname(fname);
//      user.setLname(lname);
//      em.persist(user);
//      em.merge(user);

        System.out.println("outcome"+ outcome);
    }
            User user= em.find(User.class, id);
            user.setFname(fname);
            user.setLname(lname);
            em.persist(user);
            em.merge(user);