![](/img/trans.png)
[英]JSF - f:ajax execute does not update the backing property of 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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.