Jsf onchange=";提交();重新加载我的PrimeFaces移动页面
我在使用PrimeFaces Mobile的JSF项目中遇到了问题。此页面有多个Jsf onchange=";提交();重新加载我的PrimeFaces移动页面,jsf,mobile,primefaces,submit,onchange,Jsf,Mobile,Primefaces,Submit,Onchange,我在使用PrimeFaces Mobile的JSF项目中遇到了问题。此页面有多个pm:views 我有一个单选按钮列表,如下所示: <p:selectOneRadio value="#{bean.currentElement}" converter="omnifaces.SelectItemsConverter" onchange="submit()"
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>
public void elementChanged(ValueChangeEvent e) {
currentElement = (Element) e.getNewValue();
System.out.println(getCurrentElement().getElementName());
}
<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>
问题是,每当我单击单选按钮元素时,我的页面都会完全重新加载到开始视图,这与onchange=“submit()”
有关。我也尝试过f:ajax
元素,但这似乎对我的单选按钮不起作用,因为我使用它时无法单击它们。
是否有可能只提交我当前的表单或pm:view(不带f:ajax)
PS:我也在一个PrimeFaces移动页面上尝试过这一点,它完全有效,因为应用程序只包含一个页面。使用PrimeFaces组件时,应该使用
而不是
。只要去掉onchange=“submit()”
。这确实调用了一个同步(非ajax)表单提交,它完全解释了页面重新加载。您还需要将值更改侦听器
替换为
。valueChangeListener
对于作业来说是错误的工具,您只想在设置新选择的值时调用JSF操作方法
总而言之,重写应该如下所示:
<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>
public void elementChanged(ValueChangeEvent e) {
currentElement = (Element) e.getNewValue();
System.out.println(getCurrentElement().getElementName());
}
<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
属性即可
另见: