JSF跳过阶段 - 如何调试?

时间:2010-04-26 10:31:16

标签: jsf skip phase

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

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

所以,这可能是一个鸡蛋问题: 1.未调用负责阶段,因此无法继承新表单输入。 2.系统无法识别任何新输入,因此在恢复视图后直接渲染。

我检查了没有响应完成()或者调用renderResponse()。

我被某种方式卡住了。有任何想法验证两个假设之一吗?或者如何调试一般?有没有人有类似的问题?


更新

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

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

2 个答案:

答案 0 :(得分:6)

我引用了我发布的答案before

  

每当UICommand组件时   无法调用相关的操作,   验证以下内容:

     
      
  1. UICommand组件必须放在UIForm组件中   (例如h:form)。
  2.   
  3. 您不能嵌套多个UIForm组件   (注意包含文件!)。
  4.   
  5. 不应发生验证/转换错误(使用   h:messages让他们全部完成。)
  6.   
  7. 如果UICommand组件放在UIData组件内,   确保完全相同   DataModel(背后的对象)   UIData的{​​{1}}属性)是   保留。
  8.   
  9. 组件的valuerendered属性以及所有属性   父组件不应该   在申请期间评估为disabled   请求值阶段。
  10.   
  11. 确保中没有false或任何PhaseListener   请求 - 响应链已经改变了   JSF生命周期跳过调用   行动阶段。
  12.   
  13. 请确保同一请求 - 响应中没有EventListenerFilter   连锁已经阻止了这个要求   不知怎的Servlet
  14.   

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

答案 1 :(得分:0)

找到解决方案! 我很抱歉,但我认为这是非常具体的应用程序:JSF的自定义StateManager不适用于JSF 1.2。这引起了这个奇怪的错误。 修好了StateManager,一切正常。这很痛苦并花费了很多时间: - (

感谢您的帮助: - )