我提出了以下问题。 完成后单击对话框中的按钮(弹出窗口),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。 从非常感谢你。 此致,圣地亚哥
答案 0 :(得分:0)
你有一个嵌套的h:表单。纠正这一点,因为它经常(〜总是)导致意外的行为。在一个环境中而不是在另一个环境中工作是其中之一。
答案 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。 此致,圣地亚哥