2017-05-07 51 views
0

我創建了一個jsp頁面,通過hibernate框架和struts2顯示我的mysql數據庫中包含的醫生列表(medecin,法語)。如何使用Struts2和Hibernate刪除和修改數據

我有一個刪除按鈕supprimer(法語),刪除一個醫生和一個按鈕,modifier,編輯醫生的數據。

編輯按鈕,modifier,將採取選定的醫生的所有數據(id,nom,prenom等..),並把它放在一個表格中,我可以更新它。

ListMed行動給我這個。 enter image description here

ListedesMedecins.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@ taglib prefix="s" uri="/struts-tags"%> 
<%@ taglib prefix="sb" uri="/struts-bootstrap-tags"%> 
<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>Listes des Medecins</title> 
</head> 
<body> 
    <jsp:include page="accueil.jsp"/> 
    <h1>Listes des Medecins</h1> 
     <s:if test="Medecin.size() > 0"> 
<table border="1px" cellpadding="8px"> 
<tr> 
    <th>id</th> 
    <th>Nom</th> 
    <th>Prenom</th> 
      <th>contact</th> 
    <th>specialite</th> 

</tr> 
<s:iterator value="Medecin"> 
    <tr> 
     <td><s:property value="idmed" /></td> 
     <td><s:property value="nom" /></td> 
     <td><s:property value="prenom" /></td> 
        <td><s:property value="contact" /></td> 
     <td><s:property value="specialite"/></td> 
        <td><a href="<s:url action="Modmed" namespace="/Modmed"/>"> Modifier </a> </td> 
        <td><a href="<s:url action="Supmed" namespace="/Supmed"/>"> Supprimer </a> </td> 
    </tr> 
</s:iterator> 
</s:if> 
</table> 
</body> 
</html> 

我的課MedecinDAO與所需的方法(選擇,更新,刪除列表)

public Medecin getMedecin(Integer idMedecin) { 
    log.info("********** Debut getMedecin MedecinDAO **********"); 
    Medecin Medecin = null; 
    Session session = SessionFactoryUtil.getInstance().openSession(); 
    try { 
     Medecin = (Medecin) session.get(Medecin.class, idMedecin); 

     return Medecin; 
    } catch (Exception e) { 
     e.printStackTrace(); 
     log.fatal(e.getMessage()); 
     return null; 
    } finally { 
     session.close(); 
     log.info("********** Fin getMedecin MedecinDAO **********"); 
    } 
} 

public boolean saveMedecin(Medecin Medecin) { 
    log.info("********** Debut saveMedecin MedecinDAO **********"); 
    Session session = SessionFactoryUtil.getInstance().openSession(); 
    Transaction trans = session.beginTransaction(); 
    try { 


     session.save(Medecin); 
     trans.commit(); 
     return true; 
    } catch (Exception e) { 
     e.printStackTrace(); 
     log.fatal(e.getMessage()); 
     trans.rollback(); 
     return false; 
    } finally { 
     session.close(); 
     log.info("********** Fin saveMedecin MedecinDAO **********"); 

    } 
} 

public boolean updateMedecin(Medecin Medecin) { 
    log.info("********** Debut updateMedecin MedecinDAO **********"); 
    Session session = SessionFactoryUtil.getInstance().openSession(); 
    Transaction trans = session.beginTransaction(); 
    try { 
     session.update(Medecin); 
     trans.commit(); 
     return true; 
    } catch (Exception e) { 
     e.printStackTrace(); 
     log.fatal(e.getMessage()); 
     return false; 
    } finally { 
     session.close(); 
     log.info("********** Fin updateMedecin MedecinDAO **********"); 

    } 
} 


public boolean deleteMedecin(Medecin Medecin) { 
    log.info("********** Debut deleteMedecin MedecinDAO **********"); 
    Session session = SessionFactoryUtil.getInstance().openSession(); 
    try { 
     Transaction trans = session.beginTransaction(); 
     session.delete(Medecin); 
     trans.commit(); 
     return true; 
    } catch (Exception e) { 
     e.printStackTrace(); 
     log.fatal(e.getMessage()); 
     return false; 
    } finally { 
     session.close(); 
     log.info("********** Fin deleteMedecin MedecinDAO **********"); 
    } 
} 

    public List<Medecin> allmedecin(){ 

    List<Medecin> medecin = null; 

    Session session = SessionFactoryUtil.getInstance().openSession(); 
    String registr = "from Medecin"; 

    Query query = session.createQuery(registr); 
    medecin=query.list(); 

    return medecin; 
} 

最後我的動作類,formMedAction.java

//getters,setters... 
    //this method is for adding Medecin/doctors 
    public String Ajoutmed() { 


    MedecinDAO medDAO= MedecinDAO.getInstance(); 
    Medecin M = new Medecin(); 

    M.setIdmed(idmed); 
    M.setNom(nom); 
    M.setPrenom(prenom); 
    M.setContact(contact); 
    M.setSpecialite(specialite); 
    medDAO.saveMedecin(M); 

    return SUCCESS; 

    } 
    // return list of all medecin in the table 
    public String Listmed() throws Exception { 

    MedecinDAO medDAO = MedecinDAO.getInstance(); 
    Medecin = medDAO.allmedecin(); 

    return SUCCESS; 
    } 

    // Method I created to delete the data, but I'm not sure if it correct 
    public String Supmed() { 
     MedecinDAO medDAO = MedecinDAO.getInstance(); 
     Medecin M = new Medecin(); 
     M.getIdmed(); 
     M.getNom(); 
     M.getPrenom(); 
     M.getContact(); 
     M.getSpecialite(); 
     medDAO.deleteMedecin(M); 

     return SUCCESS; 


    } 

    public string Modmed() { 
    //dont know what to do for the modifier/edit action , need your help 
    return SUCCESS; 
    } 

需要你的幫助謝謝

編輯!

找到一種方法來刪除醫生用這個代碼MedecinDAO:

public Medecin deleteMedecin(Integer idmed) { 
    log.info("********** Debut deleteMedecin MedecinDAO **********"); 
    Session session = SessionFactoryUtil.getInstance().openSession(); 
     Transaction trans = session.beginTransaction(); 
     Medecin m = (Medecin) session.load(Medecin.class, idmed); 
     session.delete(m); 
     trans.commit(); 
     return m; 
    } 

而且在動作類

public String Supmed() { 
     MedecinDAO medDAO = MedecinDAO.getInstance(); 
     Medecin m = new Medecin(); 
     m = medDAO.deleteMedecin(getIdmed()); 
     return SUCCESS; 

    } 

而且在JSP按鈕動作添加此

<td><a href="<s:url action="Supmed" namespace="/pages"><s:param name="idmed" value="%{idmed}"></s:param></s:url>"> Supprimer </a> </td> 

現在我需要知道如何編輯

回答

0

好吧,我已經找到了解決辦法。

如果你想獲得選擇的對象參數(ID,名稱或其他) 你只需要添加這段代碼。 (在我的情況下,例如,我需要:idmed,NOM prenom,接觸,specialite)

<td><a class="btn btn-warning" href="<s:url action="editmed" namespace="/pages"> <s:param name="idmed" value="%{idmed}" ></s:param><s:param name="nom" value="%{nom}" ></s:param><s:param name="prenom" value="%{prenom}" ></s:param><s:param name="contact" value="%{contact}" ></s:param><s:param name="specialite" value="%{specialite}" ></s:param></s:url>"> Modifier </a> </td> 

您創建一個編輯動作

public String editmed() 
{ 

    return SUCCESS; 
} 

,然後創建一個新的一頁,爲edit.jsp文件例如,你設置的參數的時值,在struts文本框(選擇等)

<s:form action="Modmed" id="Modmed" namespace="/pages" theme="bootstrap" cssClass="bs-example form-horizontal"> 

       <s:textfield label="Identifiant" type="Number" min="1" name="idmed" value="%{idmed}"/> 
       <s:textfield label="Nom" name="nom" value="%{nom}" /> 
       <s:textfield label="Prenom" name="prenom" value="%{prenom}" /> 
       <s:textfield label="Contact" name="contact" value="%{contact}" /> 
       <s:textfield label="Spécialité" name="specialite" value="%{specialite}"/> 

       <div class="col-lg-9 col-lg-offset-3"> 
       <s:submit cssClass="btn btn-primary" value="Sauvegarder"/> 

    </div> 
      </s:form> 

,它應該工作!

1

編輯應該像您一樣的方式刪除。首先,你可以得到Medecin對象,你婉更新:

Medecin med = (Medecin) session.get(Medecin.class, idmed); 
med.setNom("Andrea"); //set new values of your columns 

在設置屬性要更新:

public Medecin updateMedecin(Medecin updatedObject) { 
    log.info("********** Debut updateMedecin MedecinDAO **********"); 
    Session session = SessionFactoryUtil.getInstance().openSession(); 
    Transaction trans = session.beginTransaction(); 
    session.save(updatedObject); 
    trans.commit(); 
    return updatedObject; 
} 

編輯:如果您需要設置新的選擇Medecin對象的值JSP頁面,首先你需要一個表格來更新列,第二你要通過idMed形成頁,

的編輯操作JSP按鈕:

<td><a href="<s:url action="edit" namespace="/edit"><s:param name="idmed" value="%{idmed}"></s:param></s:url>"> Edit</a> </td> 

窗體頁:

<s:form action="update"> 
<s:push value="medecin"> 
    <s:hidden name="idmed" /> 
    <s:textfield name="name" label="User Name" value="%{medecin.nom} /> 
    <s:textfield name="surname" label="Sur Name" value="%{medecin.prenom} /> 
    <s:submit /> 
</s:push> 
</s:form> 

最後,你可以從JSP獲取ID參數:

request.getParameter("idmed") 
+0

thx但是,如何在新的JSP頁面中設置所選Medecin對象的值,在表單中設置idmed,nom等的值。 –

+1

我編輯了我的文章@KaneSamba – fiskra

+0

好的thx,但仍然面臨問題。我想我編輯行動出了錯誤。 public String edit() { String param = ServletActionContext.getRequest()。getParameter(「idmed」); return SUCCESS; },這是我所做的,但我有一個空白頁面,我只有標題,窗體不顯示。我創建了另一個jsp頁面,在和param中設置編輯動作,填寫表單,就像你做的那樣。但我想唯一剩下的就是現在的Action類,編輯方法。 –

相關問題