我有一个会话范围的bean
import javax.faces.bean.SessionScoped;
import javax.inject.Named;
@Named
@SessionScoped
public class SessionBean implements Serializable{
我在一个过滤器中注入了对象…
public class FiltroSeguridad implements Filter{
@Inject
private SessionBean sessionBean;
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
sessionBean.setRutaRedirect(httpRequest.getRequestURI());
}
}
但是,我在下一次交互中融合了SessionBean …
@Model
public class CuentaUsuarioWebBean implements Serializable{
@Inject
private SessionBean sessionBean;
public void loginUsuario() throws IOException{
sessionBean.getRutaRedirect();
}
}
但是该属性getRutaRedirect()
返回null
我通过CDI注释更改了导入,但仍然无法使用(javax.enterprise.context.SessionScoped
),与JSF注释(javax.faces.bean.ManagedBean
和@ManagedProperty
)相同。
谢谢。
PD:对不起,我的英语!
您不能将javax.faces.bean.SessionScoped
用于JSF和import javax.inject.Named
CDI的这两个包中的注释混合在一起。两者都反映了不同的注入机制,因此不能在同一bean上混合使用。您必须从同一程序包中选择两个注解(用于注入和Bean范围限定)。使用以下对应套件中的套件
对于基于CDI的bean定义
javax.enterprise.context.SessionScoped //for bean scoping
javax.inject.Named //for bean declaration
javax.inject.Inject //for injection
对于基于JSF的bean定义
javax.faces.bean.SessionScoped //for bean scoping
javax.faces.bean.ManagedBean //for bean declaration
javax.faces.bean.ManagedProperty //for bean injection
编辑:现在,我更好地了解了您的需求,使用以下构造注入JSF托管bean
@ManagedProperty(value="#{yourBeanName}")
SessionBean yourSessionBean;
还要注意,在JSF中,您只能注入范围比其目标范围更广的bean,例如,可以将@SessionScoped
bean注入@RequestScoped
bean中,而不能以其他方式注入
但是由于不建议使用JSF托管bean,因此最好使用CDI托管bean。在这种情况下,您 可以 将范围较小的Bean注入范围较大的Bean
这可能是一个很难回答的问题,但是在很多教程和示例中,我看到这些注释的使用就好像它们做了同样的事情。 但是,我使用时遇到了一些限制(尤其是依赖注入等),我找不到解释差异的源,如果有人能给出一个大致的概述,说明什么时候使用这两个,我将非常感谢。
问题内容: 我那里有点问题。当我想在JSF中填充DataTable时,我必须先创建一个模型,然后在我的视图中使用它。就像这里的 Primefaces示例一样。 现在,我必须创建DataTable来显示来自Web服务的数据。我不知道会有多少列,我也不知道它们的名称…您能推荐一些明智的解决方案吗? PS。我也不知道如何从Web服务中返回数据-尚待确定。 编辑 问题答案: 收集中代表属性的数据。的表示列
在我的应用程序中,用户应该能够切换区域设置(用于在页面上呈现文本的语言)。大量教程使用FacesContext.get货币实例()。getViewRoot()。setLocale()。例如:http://www.mkyong.com/jsf2/jsf-2-internationalization-example/.但是,这在JSF 2.0中根本不起作用(它在1.2中确实起作用)。这种语言从不切换。
问题内容: 我的测试课: 我在行上得到一个空指针异常: 在精确的给出空指针异常 如何使Junit类中的beanObject字段自动装配成为可能,以便可以使用“ BeanClass”类中的方法? 从评论中复制: 用简单的术语来说.. beanClass是具有某些方法的接口..我用 注释标记了该beanClass。.banClass 是由具有方法实现的beanClassImpl类实现的。.我需要在我的
问题内容: 我们将对使用JSF2.0,Hibernate,MySQL设计的Web应用程序启用UTF-8字符编码。 以下是我们的应用程序上下文文件中定义的数据源 在运行应用程序时,我们遇到异常 我们也尝试使用以下方法,但出现错误 问题答案: 经过一些解决后,我能够处理该问题-以下是对我有用的代码,以启用与UTF8一起使用的JDBC 配合使用达到目的 为了能够与Hibernate一起使用,还应在hib