bonjour ,
j'ai un problème et je n'arrive pas à trouver la solution.
j'ai créé un composant jsf à partir de composant richafaces rich:inplaceinput,
ce composant est un label modifiable,à chaque changement de valeur de label on modifie sa valeur correspendante dans la base de données .
Le code source de composant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
<ui:composition> 
    <c:if test="#{!empty sessionScope['edit']}"> 
        <h:form id="#{id}form1"> 
 
            <rich:inplaceInput id="#{id}Input" value="#{bundle[key]}" valueChangeListener="#{i18nBean.update}" 
                               onchange="submit();"> 
                <f:attribute name="key" value="#{key}"/> 
                <f:attribute name="bundleName" value="#{bundleName}"/> 
            </rich:inplaceInput> 
        </h:form> 
    </c:if> 
 
    <c:if test="#{empty sessionScope['edit']}"> 
        <h:outputLabel id="#{id}Label" value="#{bundle[key]}"> 
            <ui:insert/> 
        </h:outputLabel> 
    </c:if> 
 
</ui:composition>
et le code source de managedBean qui traite l'evenement valuechange
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
public class I18nBean { 
 
    private ILabelService labelService; 
 
  /** 
  *méthode traitant l'evenement ValueChangeEvent  
  */ 
    public void update(ValueChangeEvent event) { 
// récuperation de deux attributs key et bundleName
        FacesContext fc = FacesContext.getCurrentInstance(); 
        String locale = fc.getExternalContext().getRequestLocale().toString(); 
        UIComponent component = (UIComponent) event.getSource(); 
        String key = (String) component.getAttributes().get("key"); 
        String bundleName = (String)    component.getAttributes().get("bundleName"); 
 // mettre a jour le label dans la base de donnée
        if (ValidatorUtil.isNotBlank(key)) { 
            this.getLabelService().create(key, locale, event.getNewValue().toString()); 
        } 
 
        ResourceBundle bundle = fc.getApplication().getResourceBundle(fc, bundleName); 
        if (bundle instanceof AbstractHibernateResourceBundle) { 
            AbstractHibernateResourceBundle hibernateResourceBundle = (AbstractHibernateResourceBundle)    bundle; 
 
// mettre a jour la liste des labels
            hibernateResourceBundle.updateLabel(key, event.getNewValue().toString()); 
        } 
    }
et voila enfin la page de test:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
head> 
    <title>Page de Test</title> 
</head> 
<body> 
<h:panelGrid> 
    <h:form> 
        <h:commandLink value="Editer" actionListener="#{sessionBean.goEditMode}"/> 
        <h:commandLink value="Prévisualiser" actionListener="#{sessionBean.quitEditMode}"/> 
    </h:form> 
    <i18n:label id="label1" key="key4" bundle="#{kmji18n}" bundleName="kmji18n"/> 
</h:panelGrid> 
</body> 
</html>
le probleme est que sa fonctionne trés bien sur FF ,par contre en utillisant IE7 le formulaire n'est jamais submitté et l'evenement ValueChangeEvent n'est jamais traité.
j'ai passé beaucoup de temps sans avancer beaucoup.
J'espere que vous avez une idée.

Merci d'avance