在我的JSF应用程序中,如果我刷新页面,所有内容都会被渲染,除了主要的图形图像和jsf <f:ajax />
不起作用。如果我等待5秒,ajax调用再次工作,并且图形图像正在加载。
另一个例子是我上传图片的时候。图像获取,上传并刷新网站。在此之后显示图像,但几秒后,ajax调用将无法工作。
该应用程序在带有JSF 2.1的JBoss 7.1上运行
这是硬件速度慢还是别的问题。我会对任何提示感到满意,因为我真的不知道在哪里寻找解决方案。
示例:
<p:selectOneRadio id="options" value="#{gameWriter.uploadCover}">
<f:selectItem itemLabel="ja" itemValue="true"/>
<f:selectItem itemLabel="nein" itemValue="false"/>
<f:ajax/>
</p:selectOneRadio>
答案 0 :(得分:0)
定义f:ajax时,尝试提供要执行和更新的UI组件。同时举办活动。如果你想处理整个表单并更新整个页面,你可以在f:ajax中使用@form和@all。
@form和@all与f:ajax的示例如下。
<h:form>
<p:selectOneMenu id="cmb" value="#{investigationItemController.current}" >
<f:selectItem itemLabel="Please select an item" />
<f:selectItems value="#{investigationItemController.items}" var="ii" itemLabel="#{ii.name}" itemValue="#{ii}" />
<f:ajax event="change" execute="@form" render="@all"/>
</p:selectOneMenu>
<h:outputLabel id="lbl" value="#{investigationItemController.current}" />
</h:form>
使用primefaces ajax命令的示例如下。
<h:form>
<p:selectOneMenu id="cmb" value="#{investigationItemController.current}" >
<f:selectItem itemLabel="Please select an item" />
<f:selectItems value="#{investigationItemController.items}" var="ii" itemLabel="#{ii.name}" itemValue="#{ii}" />
<p:ajax event="change" process="cmb" update="lbl"/>
</p:selectOneMenu>
<h:outputLabel id="lbl" value="#{investigationItemController.current}" />
</h:form>
如果我们想要为多个事件执行逻辑,我们可以添加多个或一个UI组件。
从'on'开始,从UI组件的属性列表中删除'on'后,可以获取标准JSF UI组件的事件。例如,如果JSF UI支持onChange作为属性,则可以使用event =“change”。 对于primefaces UI组件,Primefaces文档下列出了可能的事件。 正确选择事件以获得成功的ajax响应至关重要。