1 Reply Latest reply on Jul 9, 2006 5:41 AM by smajima

    File download dialog appears instead of page redirection

    smajima

      I 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>