Primefaces Mobile commandButton不使用ActionListener

时间:2015-01-29 22:18:07

标签: jsf primefaces dialog actionlistener primefaces-mobile

我提出了以下问题。 完成后单击对话框中的按钮(弹出窗口),actionListener属性不起作用,即不调用Backingbean。

奇怪的是,PrimeFaces版本展示了这段代码完美无缺,只有移动版失败了。 另一个好奇是javascript功能按钮成功,是什么让我觉得它是移动版的ajax问题 这里是代码

<pm:content>
    <h:form id="productForm">

        <p:dataList value="#{productoMB.productList}" var="pro"
            paginator="true" id="productDL">
            <f:facet name="header">Menu de comidas</f:facet>

            <p:panel header="#{pro.name}" style="text-align:center">
                <h:panelGrid columns="1" style="width:100%">
                    <p:commandLink update=":homeFirst:productForm:productDetail"
                        oncomplete="PF('productDialog').show()" title="Ver Detalles">
                        <h:graphicImage library="images" name="#{pro.path}" width="320px"
                            height="120px" />
                        <f:setPropertyActionListener value="#{pro}"
                            target="#{productoMB.productSelect}" />
                    </p:commandLink>
                </h:panelGrid>
            </p:panel>
        </p:dataList>

        <p:dialog header="Detalle Plato" widgetVar="productDialog"
            modal="true" showEffect="fade" hideEffect="fade" resizable="false">
            <p:outputPanel style="text-align:center;">
                <p:panelGrid id="productDetail" columns="2"
                    rendered="#{not empty productoMB.productSelect}"
                    columnClasses="label,value">
                    <f:facet name="header">
                        <p:graphicImage library="images"
                            name="#{productoMB.productSelect.path}.jpg" width="100px"
                            height="100px" />
                    </f:facet>

                    <h:outputText value="Nombre:" />
                    <h:outputText value="#{productMB.productSelect.name}" />

                    <h:outputText value="Precio" />
                    <h:outputText value="#{productoMB.productSelect.price}" />

                    <h:outputText value="Detalles:" />
                    <h:outputText value="#{productoMB.productSelect.description}" />
                    <h:outputText value="Cantidad:" />
                    <h:inputText value="#{productoMB.quantity}" required="true">

                        <!--                        <p:ajax update="costo" listener="#{empMB.calcularPrecioTotal}" /> -->
                        <!--                        <f:validateDoubleRange minimum="0" maximum="200" /> -->
                    </h:inputText>
                    <h:outputText value="Total a Pagar:" />
                    <!--                    <h:outputText id="costo" value="#{empMB.precioTotal}" /> -->
                    <p:commandButton value="Volver"
                        onclick="PF('productDialog').hide()"></p:commandButton>
<h:form>
                    <p:commandButton value="Agregar al carrito"
                        onclick="PF('carDialog').hide()" icon="ui-icon-cart" actionListener="#{productoMB.addCart}">

                    </p:commandButton>
</h:form>
                </p:panelGrid>
            </p:outputPanel>

        </p:dialog>

    </h:form>
</pm:content>

这是一个支持

package ar.com.as.presentation.mb;
import java.util.ArrayList;
import java.util.List;
import ar.com.as.business.bo.interfaces.GenericBO;
import ar.com.as.business.bo.patterns.FactoryFacade;
import ar.com.as.model.Cart;
import ar.com.as.model.Product;

public class ProductMB {

private List<Product> productList;
private Product productSelect;
private int quantity;
private List<Cart> cartList;

public ProductMB() {
    productList = new ArrayList<Product>();
    cartList = new ArrayList<Cart>();
    findAllProduct();
}

public void findAllProduct() {
    GenericBO<Product> productBO = FactoryFacade.createFacade("facade")
            .getInstance().create("product");
    productList = productBO.findAll();
}

public void addCart() {
    System.out.println("se agrego al carrito");
}

// Getters+setters.

}

任何想法Como esta问题都解决了。或者如何在没有ajax的情况下运行方法addcart。 从非常感谢你。 此致,圣地亚哥

2 个答案:

答案 0 :(得分:0)

你有一个嵌套的h:表单。纠正这一点,因为它经常(〜总是)导致意外的行为。在一个环境中而不是在另一个环境中工作是其中之一。

Related Stackoverflow posts

答案 1 :(得分:0)

我分享了我发现的特定问题的解决方案:

    <p:commandButton value="add" onclick="addC()"
                     icon="ui-icon-plus"
                     style="margin-left:20%; margin- rigth:15%" >
    </p:commandButton >

在onclick调用javascript函数addC:

  <p:remoteCommand  name="addC"
                      actionListener="#{productoMB.addCart}" 
                      update="@widgetVar(cart)" />

RemoteCommand提供了一种使用javascript执行支持bean方法的简单方法。

显然,移动PrimeFaces有一些错误,并且无法正常使用ajax。 此致,圣地亚哥