t: inputFileUpload не работает, когда он вызывается из сопоставленной (красивые лица) .xhtml страницы - PullRequest
0 голосов
/ 23 декабря 2011

Я использую библиотеку Томагавк для загрузки файла.Однако метод вспомогательного компонента никогда не вызывается, когда я нажимаю h: commandButton для отправки формы.

Сильфон - это последовательность кода, которая должна выполнять работу, и она является частьюСтраница user_profile.xhtml (которая хранится в корне папки WebContent; приложение развернуто на JBoss 6.1):

<p:dialog widgetVar="avatar" hideEffect="fade" width="300" height="300"
    header="Avatar upload">
    <h:form enctype="multipart/form-data">
        <t:inputFileUpload value="#{uploadBean.uploadedFile}" id="upload" />
        <h:commandButton value="Upload" action="#{uploadBean.submit}" />
    </h:form>
</p:dialog>

Ссылка, обеспечивающая доступ к странице, равна http://localhost:8080/user/20,, поскольку существуетявляется ли url-mapping установленным в файле pretty-config.xml, который выглядит следующим образом:

<url-mapping id="user_profile">
    <pattern value="/user/#{id}"></pattern>
    <view-id value="/user_profile.jsf"></view-id>
</url-mapping>

Однако, когда я получаю прямой доступ к странице, избегая отображения pretty-config, http://localhost:8080/user_profile.jsf, действие загрузкиработает отлично!Итак, я полагаю, что есть какой-то конфликт с красивыми лицами, или я что-то упустил.

Заранее спасибо!

Начало web.xml :

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="YAS" version="3.0">
  <display-name>YouAndShoe</display-name>

  <context-param>
    <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>server</param-value>
 </context-param>

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

  <filter>
    <filter-name>Pretty Filter</filter-name>
    <filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>Pretty Filter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>ERROR</dispatcher>
  </filter-mapping>
...

1 Ответ

2 голосов
/ 23 декабря 2011

Фильтр Томагавк не был зарегистрирован должным образом (не были определены диспетчеры).Вот как это должно быть сделано:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="YAS" version="3.0">
  <display-name>YouAndShoe</display-name>

  <context-param>
    <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>server</param-value>
 </context-param>



  <filter>
    <filter-name>Pretty Filter</filter-name>
    <filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>Pretty Filter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>ERROR</dispatcher>
  </filter-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>
  <dispatcher>FORWARD</dispatcher>
  <dispatcher>REQUEST</dispatcher>
  <dispatcher>ERROR</dispatcher>
</filter-mapping>
<filter-mapping>
  <filter-name>MyFacesExtensionsFilter</filter-name>
  <url-pattern>/faces/myFacesExtensionResource/*</url-pattern>
  <dispatcher>FORWARD</dispatcher>
  <dispatcher>REQUEST</dispatcher>
  <dispatcher>ERROR</dispatcher>
</filter-mapping> 
...

Это решило проблему.

...