Immer Target Unreachable, identifier aufgelöst zu null in JSF-web-app
ich habe ein einfaches problem, das hier
ich bin eine einfache jsf-web-app, die die Datei hochladen
aber ich habe immer
Target Unreachable, identifier 'upload' resolved to null
hier mein upload Klasse
package SimpleLogin;
import java.io.IOException;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import org.apache.commons.io.FilenameUtils;
import org.apache.myfaces.custom.fileupload.UploadedFile;
@ManagedBean
@RequestScoped
public class upload {
private UploadedFile uploadedFile;
public void submit() throws IOException {
String fileName = FilenameUtils.getName(uploadedFile.getName());
String contentType = uploadedFile.getContentType();
byte[] bytes = uploadedFile.getBytes();
FacesContext.getCurrentInstance().addMessage(null,
new FacesMessage(String.format("File '%s' of type '%s' successfully uploaded!", fileName, contentType)));
}
public UploadedFile getUploadedFile() {
return uploadedFile;
}
public void setUploadedFile(UploadedFile uploadedFile) {
this.uploadedFile = uploadedFile;
}
}
und meine index-Seite
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:t="http://myfaces.apache.org/tomahawk"
>
<h:head>
<title>Facelet Title</title>
<h:outputStylesheet name="css/jsfcrud.css"/>
</h:head>
<h:body>
<ui:composition template="./template.xhtml">
<ui:define name="body">
<h:form>
<h:commandLink action="/contacts/List" value="Show All Contacts Items"/>
</h:form>
<h:form enctype="multipart/form-data">
<t:inputFileUpload value="#{upload.uploadedFile}" />
<h:commandButton value="submit" action="#{upload.submit}" />
<h:messages />
</h:form>
</ui:define>
</ui:composition>
ach ja, hier ist meine web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee /web-app_3_0.xsd">
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</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>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<filter>
<filter-name>MyFacesExtensionsFilter</filter-name>
<filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFacesExtensionsFilter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>faces/login.xhtml</welcome-file>
</welcome-file-list>
Sorry für die lange Verzögerung
hier mein Gesicht config.xml
<faces-config version="2.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns /javaee/web-facesconfig_2_0.xsd">
<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>SimpleLogin.simpleLogin</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>bean</managed-bean-name>
<managed-bean-class>SimpleLogin.Upload</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope></managed-bean>
<navigation-rule>
<from-view-id>/login.xhtml</from-view-id>
<navigation-case>
<from-action>
#{simpleLogin.CheckValidUser}
</from-action>
<from-outcome>fail</from-outcome>
<to-view-id>/resultforfail.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-action>
#{simpleLogin.CheckValidUser}
</from-action>
<from-outcome>success</from-outcome>
<to-view-id>/index.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<application>
<resource-bundle>
<base-name>/Bundle</base-name>
<var>bundle</var>
</resource-bundle>
</application>
und meine Vorlage
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title><ui:insert name="title">Default Title</ui:insert></title>
<h:outputStylesheet name="css/jsfcrud.css"/>
<h:outputStylesheet name="css/cssLayout.css"/>
<h:outputStylesheet name="css/default.css"/>
</h:head>
<h:body>
<div id="top">
<ui:insert name="top">Ini Header</ui:insert>
</div>
<h1>
<ui:insert name="title"></ui:insert>
</h1>
<p>
<ui:insert name="body"></ui:insert>
</p>
<div id="bottom">
<ui:insert name="bottom">Ini Footer</ui:insert>
</div>
</h:body>
was ist das problem ? kann ich nicht klar auf die hochladen-Klasse ?
Jede Hilfe ist gut 🙂
Ich denke, Sie sollten versuchen Sie Ihr ManagedBean s-Klasse auf
das Tue ich ja bereits, funktioniert immer noch nicht
Hast du alle update für Ihre
Eine weitere Sache ist, können Sie versuchen, hinzufügen dieser Konstruktor
ich legte die web-xml auf die post
Upload
.das Tue ich ja bereits, funktioniert immer noch nicht
Hast du alle update für Ihre
web.xml
- Datei?Eine weitere Sache ist, können Sie versuchen, hinzufügen dieser Konstruktor
public Upload() {}
zu Ihrem Hochladen-Klasse?ich legte die web-xml auf die post
InformationsquelleAutor Kevin phytagoras | 2012-01-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie überschrieben haben, die
@ManagedBean
durch eine<managed-bean>
Erklärung über diefaces-config.xml
jedoch, dass<managed-bean>
Erklärung hat eine andere managed-bean-name, nämlichbean
stattupload
.Haben Sie im Grunde 3 Optionen:
Verwenden
#{bean}
statt#{upload}
.Benennen Sie die
<managed-bean-name>
imfaces-config.xml
ausbean
zuupload
so dass Sie verwenden können#{upload}
.Loszuwerden
<managed-bean>
insgesamt so, dass die@ManagedBean
verwendet werden. Die managed-bean-name wird standardmäßig der bean-Klasse name mit dem 1. char klein geschrieben, so#{upload}
funktionieren sollte.Für die übrigen, Sie sind nicht im Einklang mit Java-Namenskonventionen. Bitte arbeiten Sie auch. Package-Namen sollten nur Kleinbuchstaben und Klassennamen werden sollte CamelCase und beginnen mit Großbuchstaben.
Du bist herzlich willkommen. Die hochgeladene Datei Inhalt, nur bekommen es durch
UploadedFile#getInputStream()
und schreiben Sie es auf eine beliebigeOutputStream
den üblichen Weg. Sie sollten sich nicht darum kümmern, wo es ursprünglich gespeichert wurden. Es ist ein temporärer Speicherort auf der Festplatte oder im Arbeitsspeicher sowieso.gibt es irgendwelche einfache Weise neben ? wie mit tomahawk oder anderes ? ich bin immer verwirrt über die Verwendung von inputstream ? es wäre sehr helpfulfor mich, wenn Sie mögen, um es zu erklären:)
Äh, benutzen Sie einfach
IOUtils.copy(uploadedFile.getInputStream(), someOutputStream);
. Wenn Sie stucks, einfach eine neue Frage stellen. Das ist offtopic.Puh, verstehe ich nicht, aber danke für die Antwort. Es ist wirklich hilfreich,vielleicht in der Zukunft ich werde Sie bitten, einige Fragen über java, ich arbeite derzeit an einem Projekt hier. Ich danke Ihnen sehr für Ihre Hilfe
InformationsquelleAutor BalusC