繁体   English   中英

JSF f:attribute到af:event不映射在备用bean中

[英]JSF f:attribute into a f:event not mapping in backing bean

我正在尝试将网页(xhtml)的配置文件名称传递给用户bean验证程序。 这是我的方法:

<f:event name="verifica" listener="#{RegistroBean.verificaUsuarioLogado}" type="preRenderView">            
        <f:attribute name="perfil" value="profesor"/>
    </f:event>

在支持Bean代码中,事件属性为空,但不应:

  public void verificaUsuarioLogado(ComponentSystemEvent event) {
        log.debug("URL " + UtilidadesBean.getRequestURL());
        log.debug("Verificando si está logado");
        if (event.getComponent().getAttributes().isEmpty()) {
            log.debug("No hay nada");
        } else {
            Iterator itr = event.getComponent().getAttributes().entrySet().iterator();
            while (itr.hasNext()) {
                Entry entrada = (Entry) itr.next();
                System.out.print("Clave " + (String) entrada.getKey() + " Valor " + (String) entrada.getValue());
            }
            String perfil = (String) event.getComponent().getAttributes().get("perfil");
            log.debug("Tengo el perfil de la página " + perfil);
        }
        String perfil = (String) event.getComponent().getAttributes().get("perfil");
        log.debug("Tengo el perfil de la página " + perfil);

日志输出:

14-abr-2013 12:29:20 DEBUG beans.RegistroBean.verificaUsuarioLogado:231 - URL /spum/generainforme.xhtml
14-abr-2013 12:29:20 DEBUG beans.RegistroBean.verificaUsuarioLogado:232 - Verificando si está logado
14-abr-2013 12:29:20 DEBUG beans.RegistroBean.verificaUsuarioLogado:235 - No hay nada
14-abr-2013 12:29:20 DEBUG beans.RegistroBean.verificaUsuarioLogado:246 - Tengo el perfil de la página null

有想法吗?

<f:attribute>仅在UIComponent父级中受支持。 <f:event>不是这样的。

<f:attribute>移到<f:event>

<f:event name="verifica" listener="#{RegistroBean.verificaUsuarioLogado}" type="preRenderView" />
<f:attribute name="perfil" value="profesor"/>

或者只是将其作为方法参数传递给EL,这是自Tomcat 7支持的EL 2.2以来的新增功能。

<f:event name="verifica" listener="#{RegistroBean.verificaUsuarioLogado('profesor')}" type="preRenderView" />

public void verificaUsuarioLogado(String perfil) {
    // ...
}

具体问题无关 ,在给定方法名称的情况下,您似乎想执行一些身份验证检查。 JSF视图是错误的地方。 另请参阅如何与数据库中的用户一起进行身份验证/授权?

此外,托管bean名称必须以小写字母开头。 就像现在一样

RegistroBean RegistroBean = new RegistroBean();

这不符合标准的Java命名约定 只需从@ManagedBean省略name属性,它将默认为正确的属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM