2014-12-14 3 views
0

JSF를 사용하고 있는데 h : commandButton이 양식이 en.c 유형을 가질 때 관리 빈의 측면에서 어떤 작업도 실행하지 않는다는이 문제가 있습니다. = "multipart/form-data", 그 속성을 제거하면 잘 작동합니다. 그러나 그것은 내가하는 일이 아닙니다. 왜냐하면 저는 fileupload를 사용하기 때문입니다. 여기h : form enctype = "multipart/form-data"아무 작업도 수행하지 않음

<h:form enctype="multipart/form-data" class="form-horizontal" id="form-catastrofe"> 
     <p:growl id="messages" showDetail="true" /> 
     <div class="form-group"> 
      <div class="col-sm-12"> 
       <p:fileUpload fileUploadListener="#{catastrofeBean.handleFileUploadImagen}" mode="advanced" dragDropSupport="false" 
         multiple="false" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" 
         label="Elegir Icono" 
         cancelLabel="Cancelar" 
         update="messages" /> 
        </div> 
      </div> 
     <div class="form-group"> 
      <div class="col-sm-12"> 
       <p:inputText id="inputname" value="#{catastrofeBean.catastrofe.nombre}" required="true" label="Name" styleClass="form-control"> 
        <f:validateLength minimum="2" /> 
       </p:inputText> 
       <p:watermark for="inputname" value="Nombre de Evento" id="watermarkName" /> 
      </div> 
     </div> 
     <div class="form-group"> 
      <div class="col-sm-12"> 
       <p:inputText id="inputdescripcion" value="#{catastrofeBean.catastrofe.descripcion}" required="true" label="Name" styleClass="form-control"/> 
       <p:watermark for="inputdescripcion" value="Descripcion" id="watermarkDesc" /> 
      </div> 
     </div> 
     <div class="form-group"> 
      <div class="col-sm-12">      
       <p:inputText id="inputdireccion" value="#{catastrofeBean.catastrofe.direccion}" required="true" label="Name" styleClass="form-control"/> 
       <p:watermark for="inputdireccion" value="Direccion" id="watermarkDireccion" />   
      </div> 
     </div> 
     <div class="form-group"> 
      <div class="col-sm-12"> 
      <p:fileUpload fileUploadListener="#{catastrofes.handleFileUpload}" mode="advanced" dragDropSupport="false" 
      multiple="true" allowTypes="/(\.|\/)(pdf)$/" 
      label="Elegir Plan" 
      cancelLabel="Cancelar" 
      update="messages" /> 
      </div> 
     </div>  
     <h:commandButton value="Ingresar Catástrofe" action="#{catastrofeBean.update}" class="pull-right btn btn-success"></h:commandButton> 
    </h:form> 

그리고 내 web.xml에 있습니다 : : 여기

은 내 양식이다

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
    <web-app xmlns="http://java.sun.com/xml/ns/javaee"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.0" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
<display-name>catastrophes-system-web</display-name> 
<context-param> 
    <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name> 
    <param-value>true</param-value> 
</context-param> 
<context-param> 
    <param-name>primefaces.THEME</param-name> 
    <param-value>bootstrap</param-value> 
</context-param> 
<context-param> 
    <param-name>primefaces.UPLOADER</param-name> 
    <param-value>auto</param-value> 
</context-param> 
<session-config> 
    <session-timeout>30</session-timeout> 
</session-config> 
<servlet> 
    <servlet-name>javax.ws.rs.core.Application</servlet-name> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>javax.ws.rs.core.Application</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 
<filter> 
    <filter-name>PrimeFaces FileUpload Filter</filter-name> 
    <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>PrimeFaces FileUpload Filter</filter-name> 
    <servlet-name>javax.ws.rs.core.Application</servlet-name> 
</filter-mapping> 
<error-page> 
    <error-code>404</error-code> 
    <location>/faces/error.xhtml</location> 
</error-page> 
<error-page> 
    <error-code>500</error-code> 
    <location>/faces/error.xhtml</location> 
</error-page> 
</web-app> 

어떤 아이디어가? 빈을 @ViewScoped로 변경하려고 시도했다. @RequestScoped와 아무것도하지 않았다.

@Named 
@Stateful 
@ConversationScoped 
public class CatastrofeBean implements Serializable 
{ 

    private static final long serialVersionUID = 1L; 

    /* 
    * Support creating and retrieving Catastrofe entities 
    */ 

    private Long id; 

    public Long getId() 
    { 
    return this.id; 
    } 

    public void setId(Long id) 
    { 
    this.id = id; 
    } 

    private Catastrofe catastrofe; 

    public Catastrofe getCatastrofe() 
    { 
    return this.catastrofe; 
    } 

    @Inject 
    private Conversation conversation; 

    @Inject 
    private CatastrofeDao catastofeDao; 


    public String create() 
    { 
    this.conversation.begin(); 
    return "create?faces-redirect=true"; 
    } 


    /* 
    * Support updating and deleting Catastrofe entities 
    */ 

    public String update() 
    { 
    this.conversation.end(); 

    try 
    { 
     if (this.id == null) 
     { 
     this.catastofeDao.create(this.catastrofe); 
     return "search?faces-redirect=true"; 
     } 
     else 
     { 
     this.catastofeDao.update(this.catastrofe); 
     return "view?faces-redirect=true&id=" + this.catastrofe.getId(); 
     } 
    } 
    catch (Exception e) 
    { 
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(e.getMessage())); 
    return null; 
    } 
    } 

    public void handleFileUploadImagen(FileUploadEvent event) {  
    FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Succesful", event.getFile().getFileName() + " is uploaded."); 
    FacesContext.getCurrentInstance().addMessage(null, message); 
    } 

    public void handleFileUpload(FileUploadEvent event) { 
    FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Succesful", event.getFile().getFileName() + " is uploaded."); 
    FacesContext.getCurrentInstance().addMessage(null, message); 
    } 
} 

감사 :

여기 내 관리 빈이다.

답변

0

JSF 주석에 대해 가져온 패키지를 표시하지 않았습니다. 잘못된 항목을 가져 오는 중일 수 있습니다. this

+0

그건 문제가 아니며 모든 수입품을 가지고 있습니다. – jvrdom

1

마지막으로 문제가 무엇인지 알아 냈습니다. web.xml에서 Faces Servlet을 정의하지 못했습니다.

<servlet> 
    <servlet-name>Faces Servlet</servlet-name> 
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>/faces/*</url-pattern> 
</servlet-mapping> 
관련 문제