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:
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 <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 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
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()); } }
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é.
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>
j'ai passé beaucoup de temps sans avancer beaucoup.
J'espere que vous avez une idée.
Merci d'avance
Partager