1

在我的 JSF 应用程序中,如果我刷新页面,所有的东西都会被渲染,因为 primeface 图形图像和 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>
4

1 回答 1

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 响应至关重要。

于 2013-08-18T03:52:21.987 回答