class extending ClientBehaviorBase 是否可以被视为注入目标?
Is the class extending ClientBehaviorBase can be considered as an injection target?
bean的定义很简单,如下:
@Named
@RequestScoped
public class ConfirmBean {
private String confirmMsg;
public ConfirmBean(){
confirmMsg = "Are you sure you want to delete this file ?";
}
// getters & setters
}
并且 class 继承了 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()+"');";
}
}
使用 taglib 文件-
<namespace>http://www.custom.tags/jsf/delete</namespace>
<tag>
<tag-name>confirmDelete</tag-name>
<behavior>
<behavior-id>confirm</behavior-id>
</behavior>
</tag>
context-param
在 web.xml
-
中的条目
<context-param>
<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
<param-value>/WEB-INF/taglib/delete.taglib.xml</param-value>
</context-param>
并在前层访问这个自定义标签-
<h:form>
<h:commandButton value="Delete" action="done">
<b:confirmDelete/>
</h:commandButton>
</h:form>
我正在使用 Glassfish
应用服务器 4.1.1
,内部使用 Mojarra 2.2.12
版本。
我这里有一个NPE
-
与其说扩展 class 使其不符合注入条件,不如说 @FacesBehaviour
is 注释不会使其成为注入目标。一点谷歌搜索告诉我这个:In JSF 2.2 it is not a target for injection, in 2.3 it is.
OmniFaces 在 FacesConverters and FacesValidator 中添加了对注入的支持,以便与 jsf 2.2 一起使用,但不能与 FacesBehaviour 一起使用。
另请参阅:
bean的定义很简单,如下:
@Named
@RequestScoped
public class ConfirmBean {
private String confirmMsg;
public ConfirmBean(){
confirmMsg = "Are you sure you want to delete this file ?";
}
// getters & setters
}
并且 class 继承了 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()+"');";
}
}
使用 taglib 文件-
<namespace>http://www.custom.tags/jsf/delete</namespace>
<tag>
<tag-name>confirmDelete</tag-name>
<behavior>
<behavior-id>confirm</behavior-id>
</behavior>
</tag>
context-param
在 web.xml
-
<context-param>
<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
<param-value>/WEB-INF/taglib/delete.taglib.xml</param-value>
</context-param>
并在前层访问这个自定义标签-
<h:form>
<h:commandButton value="Delete" action="done">
<b:confirmDelete/>
</h:commandButton>
</h:form>
我正在使用 Glassfish
应用服务器 4.1.1
,内部使用 Mojarra 2.2.12
版本。
我这里有一个NPE
-
与其说扩展 class 使其不符合注入条件,不如说 @FacesBehaviour
is 注释不会使其成为注入目标。一点谷歌搜索告诉我这个:In JSF 2.2 it is not a target for injection, in 2.3 it is.
OmniFaces 在 FacesConverters and FacesValidator 中添加了对注入的支持,以便与 jsf 2.2 一起使用,但不能与 FacesBehaviour 一起使用。
另请参阅: