【问题标题】:onchange="submit()" reloads my PrimeFaces Mobile pageonchange="submit()" 重新加载我的 PrimeFaces 移动页面
【发布时间】:2014-02-08 20:54:03
【问题描述】:

我在使用 PrimeFaces Mobile 的 JSF 项目中遇到问题。这个页面有几个pm:views 我有一个单选按钮列表,如下所示:

<p:selectOneRadio value="#{bean.currentElement}" converter="omnifaces.SelectItemsConverter"
                                          onchange="submit()" 
                                          valueChangeListener="#{bean.elementChanged}">

                            <f:selectItems value="#{bean.currentItem.elements}" var="element"
                                           itemLabel="#{element.elementName}" itemValue="#{element}" />

                        </p:selectOneRadio>

我的 valueChangeListener 看起来像这样:

public void elementChanged(ValueChangeEvent e) {
    currentElement = (Element) e.getNewValue();

    System.out.println(getCurrentElement().getElementName());
}

问题是,每当我单击单选按钮元素时,我的页面都会完全重新加载到开始视图,这与onchange="submit()" 有关。我也尝试过f:ajax 元素,但这似乎不适用于我的单选按钮,因为我在使用它时无法单击它们。 是否有可能只提交我当前的表单或 pm:view(没有 f:ajax)?

PS:我也在一个 PrimeFaces Mobile 页面上尝试过这个,它完全有效,因为该应用程序只包含一个页面。

【问题讨论】:

    标签: jsf mobile primefaces submit onchange


    【解决方案1】:

    使用 PrimeFaces 组件时,您应该使用 &lt;p:ajax&gt; 而不是 &lt;f:ajax&gt;。只需摆脱onchange="submit()"。这确实调用了一个同步(非ajax)表单提交,它完全解释了页面重新加载。您还需要将valueChangeListener 替换为&lt;p:ajax listener&gt;。 valueChangeListener 是错误的工具,您只对在设置新选择的值时调用 JSF 操作方法感兴趣。

    总而言之,重写应该是这样的:

    <p:selectOneRadio value="#{bean.currentElement}" converter="omnifaces.SelectItemsConverter">
        <f:selectItems value="#{bean.currentItem.elements}" var="element"
            itemLabel="#{element.elementName}" itemValue="#{element}" />
        <p:ajax listener="#{bean.elementChanged}" />
    </p:selectOneRadio>
    

    不要忘记从 elementChanged() 方法中删除 ValueChangeEvent 参数。要访问选定的值,只需直接访问currentElement 属性即可。

    另见:

    【讨论】:

      猜你喜欢
      • 2013-02-21
      • 2012-09-02
      • 2011-09-05
      • 1970-01-01
      • 2012-10-20
      • 2016-12-21
      • 1970-01-01
      • 2013-08-25
      • 2011-08-19
      相关资源
      最近更新 更多