Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 在f:视图区域设置属性之前未调用preRenderView_Jsf 2 - Fatal编程技术网

Jsf 2 在f:视图区域设置属性之前未调用preRenderView

Jsf 2 在f:视图区域设置属性之前未调用preRenderView,jsf-2,Jsf 2,我有一个基于JAAS表单的登录页面。用户可以通过表单登录,也可以通过获取URL的参数 为了以编程方式登录,我为preRenderView添加了一个事件侦听器。我还添加了一个f:view,以便设置正确的区域设置 我注意到方法activeLanguage(从f:viewlocale属性)在tryLoginWithRequestParams之前调用。(注意:一切仍然正常,我只是不高兴没有首先调用我的programmaticologin方法。) 为什么不首先调用preRenderView事件中的我的方法

我有一个基于JAAS表单的登录页面。用户可以通过表单登录,也可以通过
获取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
),在这里我只需进行编程登录,然后在失败时重定向到正常登录页面。但也许有更干净/更好的方法。