我有一个基于JAAS表单的登录页面。用户可以通过表单或通过URL的GET
参数登录。
要以编程方式登录,我为preRenderView
添加了一个事件监听器。我还添加了f:view
,因此我可以设置正确的区域设置。
我注意到方法activeLanguage
(来自f:view
locale
属性)在tryLoginWithRequestParams
之前调用。 (注意:一切仍然有效我不满意我的programmaticLogin
方法没有先调用。)
为什么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
标签......:P
PPS:在f:metadata
内移动f:view
无效。