Я получил все данные из базы данных и отобразил список со списком. теперь я хотел бы удалить одну запись, щелкнув "Удалить" в таблице. Я не уверен, как передать идентификатор записи, которую я хочу удалить. Не могли бы вы проверить мой код и дать инструкции? Я очень ценю ваши инструкции.
JSP:
<table id="employee" class="table">
<thead>
<tr>
<th><span>ID</span></th>
<th><span>Name</span></th>
<th><span>DOB</span></th>
<th><span>Address</span></th>
<th><span>Position</span></th>
<th colspan="2"><span></span></th>
</tr>
</thead>
<tbody>
<s:iterator value="emplistList" var="emplist">
<tr>
<td><s:property value="id"></s:property></td>
<td><s:property value="name"></s:property></td>
<td><s:property value="dateofbirth"></s:property></td>
<td><s:property value="address"></s:property></td>
<td><s:property value="position"></s:property></td>
<td><span><a href="delemp?name=<s:property value='id'/>">Delete</a></span>
</td>
</tr>
</s:iterator>
</tbody>
</table>
Действие:
public String delete() throws Exception{
int i = EmployeeListDao.delete(this);
if(i>0){
return SUCCESS;
}
return ERROR;
}
Dao:
public static int delete(EmployeeListAction emp) {
// TODO Auto-generated method stub
int status = 0;
Connection conn = null;
try {
String url = "jdbc:mysql://localhost:3306/Test";
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, "root", "root");
System.out.println(conn);
PreparedStatement ps = conn
.prepareStatement("Delete from employee where emp_id=?");
ps.setInt(1, emp.getId());
status = ps.executeUpdate();
} catch (Exception e) {
// TODO: handle exception
System.out.println(e);
}
return status;
}
Struts.xml
<action name="delemp" class="master.struts2.action.EmployeeListAction"
method="delete">
<result name="input">index.jsp</result>
<result name="success" type="dispatcher">index.jsp</result>
<result name="error">error.jsp</result>
</action>
делай это так:
<td><s:url action="delemp.action" var="urltag">
<s:param name="name">
<s:property value="id" />
</s:param>
</s:url> <a href="<s:property value="#urltag" />" >delete</a>
</td>
Я надеюсь, что это то, что вы хотите.
Вы можете добавить скрытое поле в свою таблицу, например: "Итак, каждый раз, когда вы нажимаете для удаления записи, извлекайте идентификатор из скрытого поля и переходите к контроллеру и выполняете функцию удаления.
Вы можете просто использовать ServletActionContext.getRequest().getParameter("paramName");
для получения значения параметра HttpRequest
в классе action
. поэтому в вашем методе удаления,
public String delete() throws Exception{
String id=ServletActionContext.getRequest().getParameter("name");
int i = EmployeeListDao.delete(id);
if(i>0){
return SUCCESS;
}
return ERROR;
}
сделают для вас работу. Но посмотрите на подобную тему здесь. Как получить доступ к параметрам url в классах действий Struts 2