Jsf 2 在f:视图区域设置属性之前未调用preRenderView
我有一个基于JAAS表单的登录页面。用户可以通过表单登录,也可以通过Jsf 2 在f:视图区域设置属性之前未调用preRenderView,jsf-2,Jsf 2,我有一个基于JAAS表单的登录页面。用户可以通过表单登录,也可以通过获取URL的参数 为了以编程方式登录,我为preRenderView添加了一个事件侦听器。我还添加了一个f:view,以便设置正确的区域设置 我注意到方法activeLanguage(从f:viewlocale属性)在tryLoginWithRequestParams之前调用。(注意:一切仍然正常,我只是不高兴没有首先调用我的programmaticologin方法。) 为什么不首先调用preRenderView事件中的我的方法
获取URL的参数
为了以编程方式登录,我为preRenderView
添加了一个事件侦听器。我还添加了一个f:view
,以便设置正确的区域设置
我注意到方法activeLanguage
(从f:view
locale
属性)在tryLoginWithRequestParams
之前调用。(注意:一切仍然正常,我只是不高兴没有首先调用我的programmaticologin
方法。)
为什么不首先调用preRenderView
事件中的我的方法?我猜它只在视图(?)的render
方法之前被有效调用
但是,我如何才能首先调用编程登录方法(在“所有”其他东西之前)
有关守则:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.org/ui">
<f:metadata>
<f:event type="preRenderView" listener="#{loginController.tryLoginWithRequestParams}" />
</f:metadata>
<f:view locale="#{translationController.activeLanguage.language}">
PS:也许堆栈应该引入一个BalusC
tag…:P
PPS:在f:view
中移动f:metadata
没有帮助。在构建视图时,而不是在渲染时解析区域设置。您可以创建一个没有进行登录的标记的视图,然后重定向到该视图,然后在另一个视图中解析区域设置。我不知道这是否适用于您的情况,但这是一个选项。不,很遗憾,这可能不起作用,因为我希望用户能够在登录页面上切换语言。我想可以做的是创建第二个“虚拟”登录页面(login2.xhtml
),在这里我只需进行编程登录,然后在失败时重定向到正常登录页面。但也许有更干净/更好的方法。