我是JSF的新手,我试图通过书籍和在线的例子来了解更多。这实际上是我轻松学习的东西,而不仅仅是阅读。因此,示例最适合我。
我试图理解我在其中一个视频教程中看到的代码示例中发生的事件的确切顺序。具体而言,f:ajax
执行和listener
属性
<h:form enctype="multipart/form-data">
<h:inputFile value="#{uploadController.image}">
<f:passThroughAttribute name="accept" value="image/png"/>
<f:ajax event="change" listener="#{uploadController.doUpload()}" execute="@form" render="@form"/>
</h:inputFile>
</h:form>
我试图理解一步一步的执行顺序。所以我理解这个的方式是
1。 f:ajax event
- 监听h:inputFile component
上可能出现的任何更改,其值绑定到Java {{1} } class并且最初具有ManagedBean
值,并在用户/客户端选择和图像文件后设置。 (因此,从初始值null开始,空值将替换为客户端选择的文件。
2。 null
- 发送或发布所有组件(例如execute="@form"
,h:inputFile
等)中包含的值h:inputText
3。每当h:form
值更改(从null或其他文件被选中)时,{{ 1}} EL表达式被触发,这会导致调用自动上传文件的h:inputFile
方法。
4。最后,#{uploadController.doUpload()}
更新了表单的外观和值(不确定doUpload()
我是否理解这个render="@form"
标签及其属性的确切含义?
我之所以这样问,是因为我知道将render="@form"
与jsf结合使用可以提高网络应用的效果,因为只有更新或呈现页面的 partials 或部分,并且无需重新加载整个页面即可获得优势。