JSF跳过阶段 - 如何调试?

Pet*_*ann 3 jsf skip phase

我正在调试一个外部JSF应用程序.问题是,我提交了一份表格,但价值没有结转.

使用阶段监听器,我可以看到生命周期没有完全运行,所以说它跳过阶段2 -5:在恢复视图阶段之后,直接调用渲染响应阶段.我想念应用值,验证,更新模型操作等等.

因此,这可能是一个鸡与蛋的问题:1.不会调用负责阶段,因此新表单输入无法结转.2.系统无法识别任何新输入,因此在恢复视图后直接渲染.

我检查了没有调用responseComplete()或者renderResponse()的调用.

我不知何故被卡住了.有任何想法验证两个假设之一吗?或者如何调试一般?有没有人有类似的问题?


更新

我怀疑,JSF不知道回发请求,并像初始视图一样处理它.这可以解释,我只通过了第1阶段和第6阶段.

如果JSF将此识别为非面部请求,我该如何检查?
如果当前有适当的treeID,我该如何检查facesContext.

Bal*_*usC 6

我是从我已经张贴一个答案引用之前:

只要UICommand组件无法调用关联的操作,请验证以下内容:

  1. UICommand组件必须放在UIForm组件内(例如h:form).
  2. 您不能将多个组件嵌套UIForm在一起(注意包含文件!).
  3. 不应该发生验证/转换错误(用于 h:messages获取所有错误).
  4. 如果UICommand部件被放置在内部UIData部件中,确保完全一样的 DataModel(在后面的对象 UIDatavalue属性)被保留.
  5. rendereddisabled组件的属性,并且父组件的所有不应该求false期间应用请求值阶段.
  6. 确保请求 - 响应链中没有PhaseListener或任何EventListener已更改JSF生命周期以跳过调用操作阶段.
  7. 确保没有FilterServlet在同一个请求 - 响应链中FacesServlet以某种方式阻止了请求 .

由于在您的特定情况下,已跳过阶段2-5并且您确定(?)FacesContext#renderResponse()未被调用,因此可能会从列表中划分原因3,6和7.原因4和5也可能被划伤,具体取决于您调试JSF阶段的方式.调查其他原因.我的原因2.检查您是否<form><form></form></form>在生成的HTML源代码中看不到并在JSF源代码中回溯.