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
<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
[email protected]
<mailto:[email protected]>
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 <http://www.ombudsman.europa.eu/>