Le haricot est défini pour être aussi simple comme suit:La classe extension ClientBehaviorBase peut-elle être considérée comme une cible d'injection?
@Named
@RequestScoped
public class ConfirmBean {
private String confirmMsg;
public ConfirmBean(){
confirmMsg = "Are you sure you want to delete this file ?";
}
// getters & setters
}
Et la classe héritant de la ClientBehaviorBase
@FacesBehavior(value = "confirm")
public class ConfirmDeleteBehavior extends ClientBehaviorBase {
@Inject
ConfirmBean confirmBean;
//@Inject
//ConfirmEJBBean confirmEJBBean;
//@EJB
//ConfirmEJBBean confirmEJBBean;
@Override
public String getScript(ClientBehaviorContext behaviorContext) {
return "return confirm('"+confirmBean.getConfirmMsg()+"');";
}
}
avec le taglib Fichier-
<namespace>http://www.custom.tags/jsf/delete</namespace>
<tag>
<tag-name>confirmDelete</tag-name>
<behavior>
<behavior-id>confirm</behavior-id>
</behavior>
</tag>
avec une entrée en context-param
en web.xml
-
<context-param>
<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
<param-value>/WEB-INF/taglib/delete.taglib.xml</param-value>
</context-param>
et l'accès à cette balise personnalisée à l'avant Couche-
<h:form>
<h:commandButton value="Delete" action="done">
<b:confirmDelete/>
</h:commandButton>
</h:form>
J'utilise le serveur d'applications Glassfish
4.1.1
avec Mojarra 2.2.12
la version utilisée en interne.
J'ai obtenu un NPE
ici-
Votre marquage BTW suggère type de celui-ci fonctionne en MyFaces (en raison de l'étiquette Mojarra ajoutée) et par exemple dans JBoss (en raison de l'étiquette GlassFish). Au moins c'est comme ça que je lis toujours les tags ... – Kukeltje