Hi Marc,

I guess the problem may come from the fact that you're using

request.getRequestDispatcher(uri).forward(request, response);

in the Filter instead of filterChain.doFilter(...);

And this is somehow causing your values not to be submitted which
means process-validations will fail and thus your action method isn't
called. However I don't really know why this happens.

Try to download the source of your MyFaces version and debug through a
whole request. Then you'll see what really happens and where the
problem is!

Regards,
Jakob


2010/12/1 AMIR-TAHMASSEB Marc Kamran <marc.amir-tahmas...@ombudsman.europa.eu>
>
> Dear all,
>
> Since I added a custom filter to deal with the local language, I have some 
> problems with some of my forms :-(
>
> I user myfaces 1.1.8 + Tomcat 1.1.10 + jsf-faceletes 1.1.14 on a Tomcat 6 
> server with JDK 1.5 and j2ee-1.4
>
> Here is my problem :
> I have a contact form and when I submit my form the page is refreshed but 
> nothing happens and the action is not done.
> Every thing worked well until I added a new filter (LocalLanguageFilter) to 
> deal with the language of navigation.
> Before my links where like this : 
> http://www.ombudsman.europa.eu/shortcuts/contacts.faces
> With the filter they will be like this : 
> (http://www.ombudsman.europa.eu/en/shortcuts/contacts.faces)
> The filter seems to work fine with anything but the Input Text fields :-(
>
> In my form I have something like that :
>
> <h:commandLink id="sendButton" action="#{contactForm.send}"
> title="#{session.messages.shortcuts_contactform_send}">
>     #{session.messages.shortcuts_contactform_send}
> </h:commandLink>
>
> In my web.xml I have this filter :
>
>  <filter>
>   <filter-name>localLanguageFilter</filter-name>
>   <filter-class>
>    ec.ep.eo.eoweb.filter.LocalLanguageFilter
>   </filter-class>
>  </filter>
>
>  <filter-mapping>
>   <filter-name>localLanguageFilter</filter-name>
>   <url-pattern>*.faces</url-pattern>
>  </filter-mapping>
>
> In my faces-config :
>
> <managed-bean>
>     <managed-bean-name>contactForm</managed-bean-name>
>     
> <managed-bean-class>ec.ep.eo.eoweb.presentation.bean.form.ContactForm</managed-bean-class>
>     <managed-bean-scope>session</managed-bean-scope>
>     <managed-property>
>         <property-name>services</property-name>
>         <value>#{EOWebServicesImpl}</value>
>     </managed-property>
> </managed-bean>
>
> <navigation-rule>
>     <from-view-id>*</from-view-id>
>     <navigation-case>
>         <from-outcome>go_contacts</from-outcome>
>         <to-view-id>/shortcuts/contacts.xhtml</to-view-id>
>         <redirect />
>     </navigation-case>
> </navigation-rule>
>
> In my ContactForm, I have a send() method that is never reched :-( :
>
> public
>
> synchronized String send() {
>     (some action to send an email....)
> }
>
> And finaly, here is my LocalLanguageFilter :
>
> public class LocalLanguageFilter implements Filter {
>
> ...
>
> public void
>
> doFilter(ServletRequest servletRequest, ServletResponse servletResponse, 
> FilterChain filterChain) throws IOException, ServletException {
>
> HttpServletRequest request = (HttpServletRequest) servletRequest;
> HttpServletResponse response = (HttpServletResponse) servletResponse;
> String originalUri = request.getRequestURI().toLowerCase();
> String uri = originalUri;
> String contextPath = request.getContextPath().toLowerCase();
> if (uri.startsWith(contextPath)) {
>     uri = uri.substring(contextPath.length());
> }
> String[] parts = uri.split(Constants.PATTERN_SLASH);
> if (parts.length>0 && parts[1].length()==2) {
>     String languageCode=parts[1];
>     uri = uri.substring(3);
>     ILanguage language = 
> getServices().findLanguageByBusinessKey(languageCode);
>     if (language==null) {
>         language=Constants.ENGLISH;
>     }
>     request.getSession().setAttribute(Constants.SYSTEM_LANGUAGE, language);
> }
>
> request.getRequestDispatcher(uri).forward(request, response);
>
> }
>
> ...
>
> }
>
> Thanks in advance for you help
>
> Marc
>
>
>
>
> Médiateur européen
>
> Marc Kamran Amir-Tahmasseb
>
> Unité Communication - Développeur web
>
> T. +33 (0)3 88 17 44 10
>
> marc.amir-tahmas...@ombudsman.europa.eu
>
> 1 avenue du Président Robert Schuman
>
> CS 30403
>
> F - 67001 Strasbourg Cedex
>
> T. + 33 (0)3 88 17 23 13
>
> F. + 33 (0)3 88 17 90 62
>
> www.ombudsman.europa.eu
>
>
>
>
>
>


--
Jakob Korherr

blog: http://www.jakobk.com
twitter: http://twitter.com/jakobkorherr
work: http://www.irian.at

Reply via email to