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);
}
}
감사 :
여기 내 관리 빈이다.
그건 문제가 아니며 모든 수입품을 가지고 있습니다. – jvrdom