0

我要描述的可能是熟悉 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。为什么 ??

谢谢菲利波

4

0 回答 0