题
我正在调试外国JSF申请。问题是,我提交表格,但值并未延续。
有了我可以看到的相位侦听器,生命周期并不能完全通过,因此可以说它跳过了第2 -5阶段:在还原视图阶段之后,渲染响应阶段被直接调用。我错过了应用值,验证,更新模型操作等。
因此,这可能是一个鸡和蛋的问题:1。不调用负责任的阶段,因此新表格输入无法延续。 2.系统无法识别任何新输入,因此在还原视图后直接渲染。
我检查了没有响应的呼叫()oder rendersponse()。
我以某种方式卡住了。验证两个假设之一的想法吗?还是一般如何调试?有人有类似的问题吗?
更新
我怀疑,JSF不知道 回发请求 并像一个 初始视图. 。这可以解释,我只通过了第1阶段和6阶段。
我该如何检查,如果JSF将其识别为 非脸部重新要求?
如果有适当的情况,我该如何检查 TreeId 在电流中 facesContext
.
解决方案 2
找到了解决方案!很抱歉,我猜这是非常具体的:JSF的自定义stateManager与JSF 1.2无法使用。这导致了这个奇怪的错误。固定了StateManager,一切正常。那是痛苦的,花了很多时间:-(
还是要谢谢你的帮助 :-)
其他提示
我从我发布的答案中引用 前:
每当一个
UICommand
组件无法调用相关的操作,请验证以下内容:
UICommand
必须将组件放置在一个UIForm
组件(例如h:form
).- 你不能 巢 多
UIForm
彼此之间的组件(请注意包含文件!)。- 不应发生验证/转换错误(使用
h:messages
让他们全部)。- 如果
UICommand
组件放置在一个UIData
组件,确保完全相同DataModel
(背后的对象UIData
'value
保留属性)。- 这
rendered
和disabled
组件和所有父组件的属性不应评估false
在应用请求值阶段。- 确保不
PhaseListener
或任何EventListener
在请求响应链中,链条改变了JSF生命周期,以跳过Invoke动作阶段。- 确保不
Filter
或者Servlet
在同一请求中,响应链阻止了请求FacesServlet
不知何故。
由于在您的特殊情况下,第2-5阶段被跳过,您确定(?) FacesContext#renderResponse()
没有被调用,可以从列表中刮擦3、6和7的原因。根据您如何调试JSF阶段的方式,可能也可能会刮擦4和5的原因。调查其他原因。我在原因2上的美分2检查您是否看不到 <form><form></form></form>
在生成的HTML源中,并在JSF源中回溯。