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>