JSF prerenderview监听器未在页面转发时执行?

时间:2012-07-05 13:33:43

标签: jsf event-handling

我要描述的可能是那些熟悉JSF阶段周期的人的预期行为,但对我来说这并不明显,所以我要求确认。 在JSF页面中,我为prerenderview事件设置了一个监听器。 该页面由于jsf-forward而处理。监听器未被执行。 如果我通过其URL直接访问页面(执行GET),则执行侦听器。 我的代码有问题或者这是正确的行为吗? 我在互联网上搜索了很多,但没有找到任何有用的东西。

更新 正如我在评论中所说,我跳到了错误的结论。我所描述的不是一般行为,而是由于错误或更复杂的情况而导致的特殊情况。

更新2 经过进一步调查后,我得出了这样的结论:问题似乎与将preRenderView监听器放在使用模板的页面中的错误方法有关。不幸的是,它在某些情况下有效,而在其他情况下无效。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org  /TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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.prime.com.tr/ui">
 <f:metadata>
    <f:event listener="#{permessitemporaneiController.preCreate}" type="preRenderView" />
</f:metadata>
<ui:composition template="/template.xhtml">
...

我应该在模板中创建一个插入区域,并将标记放在前面代码中的a中。

奇怪的是,使用'错误'代码时,使用GET请求正确调用侦听器,但不能使用jsf-forward。为什么??

由于 菲利普

0 个答案:

没有答案