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