HI,
我对在JSF bean中调用ActionListener方法有疑问。例如,JSF表单的每个请求或提交都经历了六个阶段的生命周期。但是,当我们触发特定事件(如动作侦听器或值更改侦听器)时,是否存在与该请求关联的生命周期?
请澄清我。
答案 0 :(得分:10)
在调用操作阶段期间调用任何操作侦听器,之前实际操作方法。要调用哪些动作侦听器方法是根据与提交相关联的actionListener
组件的UICommand
属性确定的。
在验证阶段调用任何值更改侦听器(或在成功转换/验证提交后,在immediate="true"
特定UIInput
组件>时应用请求值阶段当提交的值与初始值不同时,值和仅。要调用哪些值更改侦听器方法是根据与提交关联的valueChangeListener
组件的UIInput
属性确定的。
不,他们没有自己的生命周期。当他们完成执行并返回时,它仍处于生命周期的同一阶段。在调用valueChangeListener
之后,JSF将继续转换/验证下一个UIInput
组件,如果没有,则继续下一阶段。在调用actionListener
之后,JSF将继续使用下一个actionListener
,或者如果没有,则调用实际操作方法。
更新:在再次阅读您的评论后,我认为我现在看到您对价值变化倾听者的疑虑。您似乎认为默认情况下,它会在客户端更改事件期间立即向服务器端发出一个全新的请求。它默认情况下不。您只能通过添加一小段 JavaScript代码来实现此目的,该代码在HTML输入字段的更改事件期间提交整个HTML表单。
onchange="this.form.submit()"
这部分与JSF无关。这是一个简单的HTML属性。在webbrowser中打开页面,右键单击并选择查看源。你会看到它就在那里。在浏览器中禁用JavaScript或在JSF代码中删除它,您将看到它将不再起作用。你需要按下提交按钮你自己才能全部运行。