Support for redirectAction: and redirect: prefixes was removed as from version 2.3.15.1. So, let's forget redirection this way.

I was using redirection because using

<s:submit value="%{getText('button.label.cancel')}" action="index"/> (the same than 
name="action:index"?)

throws error 404, resource not available: "myapp/index.action".

Using method does not work either:

<s:submit value="%{getText('button.label.cancel')}" method="cancel"/>

    public String cancel() {
        return "cancel";
    }

<result name="cancel" type="redirectAction">index</result>

I'm not sure if Paul was meaning this.


El 15/10/2013 12:59 p.m., Paul Benedict escribió:
If you want to do a redirect, you need your action mapping to handle
"cancel" and use a redirectAction result.


On Tue, Oct 15, 2013 at 12:53 PM, Antonio Sánchez
<juntandolin...@gmail.com>wrote:

Hi.

Simple CRUD sample application, paramsPrepareParams, wildcard method
selection.

Cancel button in edit form, when reached for creating a new employee bean,
is not cancelling and redirecting to index, but actually performing form
action, which is "save". Conversely,  cancel is working properly if edit
form is reached from "edit" link, instead of "create".

I guess it has to do  with interceptors stacks and validation, but I have
no idea where the problem is.

Code for cancel button in employeeForm.jsp:

<s:submit value="%{getText('button.**label.cancel')}"
name="redirectAction:index"/>

Working on issue: 
https://issues.apache.org/**jira/browse/WW-3993<https://issues.apache.org/jira/browse/WW-3993>

Thanks!

- struts.xml:

     <package name="default" namespace="/" extends="struts-default">

         <default-action-ref name="index"/>

         <action name="index" class="struts.apache.org.**simpleCRUD.action.
**EmployeeAction" method="list">
             <result name="success">/WEB-INF/jsp/**employees.jsp</result>
             <interceptor-ref name="basicStack"/>
         </action>
         <action name="*Employee" class="struts.apache.org.**
simpleCRUD.action.**EmployeeAction" method="{1}">
             <result name="success" type="redirectAction">index</**result>
             <result name="input">/WEB-INF/jsp/**employeeForm.jsp</result>
             <result name="error">/WEB-INF/jsp/**error.jsp</result>
             <interceptor-ref name="**paramsPrepareParamsStack"/>
         </action>
     </package>

- EmployeeAction

public class EmployeeAction extends ActionSupport implements Preparable {
     private EmployeeService empService = new EmployeeDaoService();
     private DepartmentService deptService = new DepartmentDaoService();

     private Employee employee;
     private List employees;
     private List departments;

     public void prepare() throws Exception {
         departments = deptService.getAllDepartments(**);

         if (employee != null
                 && employee.getEmployeeId() != null
                 && !("".equals(employee.**getEmployeeId())) ) {
             employee = empService.getEmployee(**employee.getEmployeeId());
         }
     }

     public String save() {
         if (employee.getEmployeeId() == null) {
             empService.insertEmployee(**employee);
         } else {
             empService.updateEmployee(**employee);
         }
         return SUCCESS;
     }

     public String delete() {
         empService.deleteEmployee(**employee.getEmployeeId());
         return SUCCESS;
     }

     public String list() {
         employees = empService.getAllEmployees();
         return SUCCESS;
     }

     .................

- employees.jsp (index):

<h1><s:text name="label.employees"/></h1>
<s:url id="url" action="inputEmployee" />
<a href="<s:property value="#url"/>">Add New Employee</a>

.......

     <s:iterator value="employees" status="status">
         <tr class="<s:if test="#status.even">even</s:**
if><s:else>odd</s:else>">
             <td class="nowrap"><s:property value="firstName"/></td>
             <td class="nowrap"><s:property value="lastName"/></td>
             <td class="nowrap"><s:property value="age"/></td>
             <td class="nowrap"><s:property value="department.name"/></td>
             <td class="nowrap">
                 <s:url action="inputEmployee" id="url">
                     <s:param name="employee.employeeId"
value="employeeId"/>
                 </s:url>
                 <a href="<s:property value="#url"/>">Edit</a>
                 &nbsp;&nbsp;&nbsp;
                 <s:url action="deleteEmployee" id="url">
                     <s:param name="employee.employeeId"
value="employeeId"/>
                 </s:url>
                 <a href="<s:property value="#url"/>">Delete</a>
             </td>
         </tr>
     </s:iterator>

- employeeForm (reached from add and edit employee links):

<s:form action="saveEmployee" method="post">
     <s:textfield name="employee.firstName" value="%{employee.firstName}"
label="%{getText('label.**firstName')}" size="40"/>
     <s:textfield name="employee.lastName" value="%{employee.lastName}"
label="%{getText('label.**lastName')}" size="40"/>
     <s:textfield name="employee.age" value="%{employee.age}"
label="%{getText('label.age')}**" size="20"/>
     <s:select name="employee.department.**departmentId"
value="%{employee.department.**departmentId}" list="departments"
listKey="departmentId" listValue="name"/>
     <s:hidden name="employee.employeeId" value="%{employee.employeeId}"**
/>
     <s:submit value="%{getText('button.**label.submit')}"/>
     <s:submit value="%{getText('button.**label.cancel')}"
name="redirectAction:index"/>
</s:form>









------------------------------**------------------------------**---------
To unsubscribe, e-mail: 
user-unsubscribe@struts.**apache.org<user-unsubscr...@struts.apache.org>
For additional commands, e-mail: user-h...@struts.apache.org





---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to