I have such struts-config.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
<form-bean name="AddActionBean" type="ru.add.AddActionBean"/>
<form-bean name="DeleteActionBean" type="ru.delete.DeleteActionBean"/>
</form-beans>
<global-exceptions>
</global-exceptions>
<global-forwards>
</global-forwards>
<action-mappings>
<action input="/add.jsp" name="AddActionBean" path="/addPerson"
scope="request" type="ru.add.AddPersonAction">
<forward name="success" path="/list.jsp"/>
</action>
<action input="/list.jsp" name="DeleteActionBean" path="/deletePerson"
scope="request" type="ru.delete.DeletePersonAction">
<forward name="successDelete" path="/listResult.jsp"/>
</action>
</action-mappings>
...
</struts-config>
File DeleteActionBean.java:
package ru.delete;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import java.sql.*;
import javax.sql.*;
import java.util.*;
import javax.naming.*;
import ru.database.DataBaseHandler;
public class DeleteActionBean extends org.apache.struts.action.ActionForm {
private String id;
private String name;
private String email;
private String gender;
private ResultSet personsList;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public ArrayList getPersonsList() throws SQLException {
ArrayList list = new ArrayList();
while(personsList.next()) {
int id = personsList.getInt("id");
String name = personsList.getString("name");
String email = personsList.getString("email");
boolean gender = personsList.getBoolean("sex");
list.add(new PersonEntry(id, name, email, gender));
}
return list;
}
public DeleteActionBean() throws NamingException, SQLException {
super();
DataBaseHandler db = new
DataBaseHandler("java:/comp/env/jdbc/postgres");
personsList = (ResultSet) db.returnQuery("SELECT * FROM persons");
}
public ActionErrors validate(ActionMapping mapping, HttpServletRequest
request) {
ActionErrors errors = new ActionErrors();
if (getName() == null || getName().length() < 1) {
errors.add("name", new ActionMessage("error.name.required"));
}
return errors;
}
}
File DeletePersonAction.java:
package ru.delete;
import java.util.*;
import java.io.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
import ru.database.DataBaseHandler;
public class DeletePersonAction extends Action {
/* forward name="success" path="" */
private final static String SUCCESS = "successDelete";
public DeletePersonAction() throws IOException {
// Test code
PrintWriter out = new PrintWriter(new FileWriter("c:/hello.txt"));
out.print(String.valueOf(new Random().nextInt()));
out.close();
// End of test code
}
/**
* This is the action called from the Struts framework.
* @param mapping The ActionMapping used to select this instance.
* @param form The optional ActionForm bean for this request.
* @param request The HTTP Request we are processing.
* @param response The HTTP Response we are processing.
* @throws java.lang.Exception
* @return
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// Test code
PrintWriter out = new PrintWriter(new FileWriter("c:/hello.txt"));
out.print(String.valueOf(new Random().nextInt()));
out.close();
// End of test code
Iterator it = request.getParameterMap().entrySet().iterator();
DataBaseHandler db = new
DataBaseHandler("java:/comp/env/jdbc/postgres");
db.voidQuery("delete from persons where id=" + it.next());
db.close();
return mapping.findForward(SUCCESS);
}
}
File list.jsp:
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
<html:html>
<head>
<title>List</title>
</head>
<body>
<html:form action="/deletePerson" method="POST">
<table border="1">
<tr>
<td>Name</td>
<td>E-mail</td>
<td>Gender</td>
<td>Action</td>
</tr>
<logic:iterate id="element" name="DeleteActionBean"
property="personsList">
<tr>
<!-- Name of person -->
<td><bean:write name="element" property="name"/></td>
<!-- E-mail of person -->
<td><bean:write name="element" property="email"/></td>
<!-- Gender of person -->
<td><bean:write name="element" property="gender"/></td>
<!-- Delete button -->
<bean:define id="tempId" name="element" property="id"/>
<td><html:submit property="tempId" value="Delete"/></td>
</tr>
</logic:iterate>
</table>
</html:form>
</body>
</html:html>
Then i press button 'Delete', so there is no action and i'm on page
deletePerson.do
(and i my saw list.jsp again, without any changes), but DeletePersonAction.java
doesn't
work (i understood this with test code). When i'm press button delete don't
show me listResult.jsp,
but i declared this in struts-config.xml. What's the problem? Why actions
declared in DeletePersonAction.java
don't play any role? Thanx.
--
by SkyStar
Without music, life would be a mistake. (Friedrich Nietzsche)
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]