Je travaille sur une exigence pour mettre en évidence les champs qui ont échoué en rouge après la validation côté serveur JSF. Aucun javascript ne peut être utilisé pour la validation. Existe-t-il une méthode pour lier la validation côté serveur avec les modifications de style css?Css Changement de style avec validation JSF
Répondre
Vous pouvez le faire avec un bean géré:
public class ValidBean {
private UIComponent myComponent;
public UIComponent getMyComponent() {
return myComponent;
}
public void setMyComponent(UIComponent myComponent) {
this.myComponent = myComponent;
}
public String getErrorStyle() {
FacesContext context = FacesContext
.getCurrentInstance();
String clientId = myComponent.getClientId(context);
Iterator<FacesMessage> messages = context
.getMessages(clientId);
while (messages.hasNext()) {
if (messages.next().getSeverity().compareTo(
FacesMessage.SEVERITY_ERROR) >= 0) {
return "background-color: red";
}
}
return null;
}
}
Demande variable portée:
<managed-bean>
<managed-bean-name>validBean</managed-bean-name>
<managed-bean-class>stylevalid.ValidBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
vue de l'échantillon:
<f:view>
<h:form>
<h:inputText binding="#{validBean.myComponent}" styleClass="foo"
style="#{validBean.errorStyle}">
<f:validateLength minimum="6" />
</h:inputText>
<h:commandButton />
<h:messages />
</h:form>
</f:view>
Le composant est lié à la fève de support. Si des messages d'erreur ont été mis en file d'attente pour le composant, ils remplacent ses paramètres de classe CSS par son attribut de style.
Le cadre de couture rend cela très facile. Check this out: http://www.redhat.com/docs/manuals/jboss/jboss-eap-4.2/doc/seam/Seam_Reference_Guide/JSF_form_validation_in_Seam.html
Salut, cette méthode a l'air bien, mais nous n'utilisons pas de couture dans le projet en cours ... dommage, car en tant que constructions Seam vraiment aider dans de nombreux cas .. – Barun
Désolé de l'entendre. Seam est vraiment une application de tueur pour JSF. Je peux sympathiser, cependant, car je travaille maintenant sur une application JSF qui n'utilise pas Seam et je trouve ennuyeux de maintenir l'état à travers les flux de pages. – Drew
Même état ici ... problèmes liés au maintien de l'état ... nous allons avec Spring Webflow ... mais c'est pour un autre sujet .. – Barun
- 1. Changement de feuilles de style (avec Javascript?)
- 2. Conflits d'attributs JSF/CSS
- 3. Actualiser JSF avant la validation
- 4. Style de fichier d'entrée Safari avec CSS?
- 5. Style de liste CSS
- 6. css style de réécriture?
- 7. Position CSS changement/problème
- 8. Android: changement de style quand concentré
- 9. Redéfinition un style CSS
- 10. validation JSF conditionnellement requis sous forme a4j
- 11. Comment contourner la validation dans dataTable? JSF
- 12. Utilisation de kaptcha avec JSF
- 13. Héritage du style CSS
- 14. Formulaire soumis même validation A4j échoue + jsf
- 15. Rétablissement d'un style de style CSS par défaut
- 16. Datepicker BeforeShowDay Problème CSS avec le style de contenu
- 17. Validation d'un changement unique dans SVN
- 18. Style CSS des formulaires infopath
- 19. Partager style entre classes CSS
- 20. style css de travail mais le lien css pas
- 21. changement classe CSS basée sur l'existence
- 22. Intégration de JQuery avec JSF
- 23. Erreur de validation css Liaison moz?
- 24. Changement de position de fond CSS sur l'axe Y seulement
- 25. Validation de formulaire de style Digg avec des astuces avec JQuery
- 26. JSF Validation ne trouve pas la classe ResourceBundle personnalisée
- 27. changement Programmatically règle de validation dans WPF TextBox
- 28. problème avec JSF h: commandButton
- 29. jQuery UI Dialog style CSS individuel
- 30. Comment modifier le style CSS d'une info-bulle YUI?
Salut cette méthode semble bonne et fonctionne aussi, mais est l'injection de styles CSS de haricots dans JSP une pratique standard est JSF. Je veux dire du point de vue de la maintenance, il sera tout à fait évident que le changement doit être fait dans les classes Java. Et si je veux ajouter un autre élément de style, ce ne sera pas possible. Ce n'est pas un facteur pour moi en ce moment mais j'étais juste inquiet de tous les problèmes futurs. – Barun
Probablement une alternative légèrement meilleure serait de déterminer dynamiquement l'attribut styleClass. De cette façon, vous aurez seulement besoin de changer le fichier CSS plutôt que la classe Java. – Drew
@Barun - vous avez raison; Ce n'est pas une solution idéale. Les composants de base ont tendance à être un peu basique. Les gens regardent les bibliothèques de contrôle pour une expérience plus riche. Une alternative serait de faire de errorStyle un booléen et de résoudre la valeur du style via une fonction: # {myfn: resolve (validBean.errorStyle, 'szErrStyle', 'szOkStyle')}. De cette façon, vous obtenez moins de détails de couche de présentation qui fuient vers l'arrière. – McDowell