File download dialog appears instead of page redirection
smajima Jul 9, 2006 3:03 AMI tried to check my build file and write tiny program.
The sample registration program delivered with seam did work correctly.
I write sumilar program. It doesn't work correctly.
Instead of page redirection there appears "File download" dialog of IE saying download success.seam.
Why my program doesn't work.
I use SEAM-1.0.0CR3 + JBOSS4.0.4.GA.
My tiny code is
package firstseam.action;
import java.io.Serializable;
import java.util.List;
import javax.annotation.Resource;
import javax.ejb.SessionContext;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.hibernate.validator.Valid;
import org.jboss.seam.annotations.IfInvalid;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Outcome;
import org.jboss.seam.core.FacesMessages;
import firstseam.entity.Customer;
@Stateless
@Name("editCustomer")
public class EditCustomerAction implements Serializable, EditCustomer {
/**
*
*/
private static final long serialVersionUID = 1L;
@In
@Valid
Customer customer;
@PersistenceContext
EntityManager em;
@Resource
SessionContext ctx;
@IfInvalid(outcome=Outcome.REDISPLAY)
public String createCustomer() {
List existing = em.createQuery("select customerId from Customer c where c.customerId=:cid")
.setParameter("cid", customer.getCustomerId())
.getResultList();
if (existing.size()==0)
{
em.persist(customer);
return "/success.jsp";
}
else
{
FacesMessages.instance().add("User #{user.username} already exists");
return null;
}
}
}
ejb-jar.xml file is
<ejb-jar> <assembly-descriptor> <interceptor-binding> <ejb-name>*</ejb-name> <interceptor-class>org.jboss.seam.ejb.SeamInterceptor</interceptor-class> </interceptor-binding> </assembly-descriptor> </ejb-jar>
faces-config.xml is
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd"> <faces-config> <!-- Phase listener needed for all Seam applications --> <lifecycle> <phase-listener>org.jboss.seam.jsf.SeamPhaseListener</phase-listener> </lifecycle> </faces-config>
web.xml is
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- Seam -->
<listener>
<listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
</listener>
<!-- Global JNDI name pattern for JBoss EJB3 (change for other servers) -->
<context-param>
<param-name>org.jboss.seam.core.init.jndiPattern</param-name>
<param-value>SeamRegister/#{ejbName}/local</param-value>
</context-param>
<context-param>
<param-name>org.jboss.seam.core.init.componentClasses</param-name>
<param-value></param-value>
</context-param>
<context-param>
<param-name>org.jboss.seam.core.init.myFacesLifecycleBug</param-name>
<param-value>true</param-value>
</context-param>
<!-- MyFaces -->
<listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Faces Servlet Mapping -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.seam</url-pattern>
</servlet-mapping>
</web-app>