【问题标题】:PrimeFaces page Redirecting when checkbox is clickedPrimeFaces页面在单击复选框时重定向
【发布时间】:2014-06-05 10:01:43
【问题描述】:

我正在尝试将一个简单的复选框附加到 primefaces 中的数据列表。该复选框供用户对采购订单进行多次审批。当我不附加复选框时,我单击数据列表并成功进入下一页。但是当我附加复选框时,它并不成功。任何帮助将不胜感激。谢谢!

前端 Xhtml:

<p:dataList id="poList" value="#{purchaseOrder.purchaseOrders}"
    var="po" type="inset">
    <f:attribute name="filter" value="true" />
    <f:attribute name="placeholder" value="Search" />
    <f:attribute name="autoDividers" value="true" />
    <f:attribute name="icon" value="grid" />
    <f:attribute name="iconSplit" value="true" />
    <h:outputLabel for="name" value="Standard Label:" />

    <p:column>
        <p:commandLink id="poItem" action="pm:poDetails?transition=slide"
            update=":poDetailsForm:content" styleClass="selection">
            <f:setPropertyActionListener value="#{po}"
                target="#{purchaseOrder.po}" />
            #{po.poNumber}9 for #{po.vendorName} at <br />
            <font color='red'>#{po.moneyValue}</font>
     <p:column>
        <p:selectBooleanCheckbox id="ApprovePOcb" value="" 
            itemLabel="Approve" />  
     </p:column>    
        </p:commandLink>
    </p:column>

    <f:facet name="footer">
        <strong>#{fn:length(purchaseOrder.purchaseOrders)} PO(s)</strong>
    </f:facet>
</p:dataList>   

PurchaseOrderMBean:

public class PurchaseOrderMBean implements Serializable
{
    List<PurchaseOrder> purchaseOrderList;
    PurchaseOrder selectedPo;

    public PurchaseOrderMBean()
    {
        purchaseOrderList = new ArrayList<PurchaseOrder>();
        purchaseOrderList.add(
            new PurchaseOrder(232324, "ABC",  "USD" , 500000.00, "LargeCap"));
        purchaseOrderList.add(
            new PurchaseOrder(43342, "XYZ",  "USD", 700000.00, "MediumCap"));

    }

    public List<PurchaseOrder> getPurchaseOrders()
    {

        List<PurchaseOrder> pendingPos = new ArrayList<PurchaseOrder>();


        for (PurchaseOrder po : purchaseOrderList)
        {

            if ((po.getStatus().equals("PEN")))
            {
                pendingPos.add(po);
            }

        }
        return pendingPos;

    }

    public void setPo(PurchaseOrder po)
    {
        selectedPo = po;
        System.out.println("PO selected: " + po);
    }

    public PurchaseOrder getPo()
    {
        return selectedPo;
    }

    public void savePurchaseOrder()
    {
        System.out.println("savePurchaseOrder() called");
    }

    public void setUpdateStatus(String poid)
    {
        System.out.println("setUpdateStatus() called");
        PurchaseOrder po=(PurchaseOrder)getPurchaseOrder(poid);             
        po.setStatus("APPROVE");        
        System.out.println("setUpdateStatus() updated");
    }

    public String getUpdateStatus()
    {
        return "";
    }

    public PurchaseOrder getPurchaseOrder(String poid)
    {
        PurchaseOrder po=null;

        System.out.println("getPurchaseOrder() called");

        for (int i=0;i<this.getPurchaseOrders().size();i++)
        {
            po=(PurchaseOrder)getPurchaseOrders().get(i);
            if (po.getPoNumber()==Long.parseLong(poid))
                break;
        }

        System.out
            .println("getPurchaseOrder() po returned");
        return po;
    }


    public String gotoDetails()
    {

        return "po_details?transition=slide";
    }
}

我只是在添加复选框时卡住了。尝试了很长时间。

【问题讨论】:

  • 是我还是问题标题与其内容完全无关?
  • @XtremeBiker 不,它在 etitle 中具有误导性
  • 我删除了 selectbooleancheckbox 属性中的 value="" 并且成功了!谢谢!

标签: java jsf primefaces facelets


【解决方案1】:

添加调用一个 bean 并进行重编, 像这样:

<p:selectBooleanCheckbox id="ApprovePOcb" value="" itemLabel="Approve" />  
   <p:ajax event="change" listener="#{bean.checkboxChanged}"/>
</p:column>

在 bean 中做:

public class bean implements Serializable {
    //all variabile and methode
    public void checkboxChanged() {
        try {
            FacesContext.getCurrentInstance()
                .getExternalContext().redirect("./page.jsf");
        }
        catch (IOException e) {
            //error
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    相关资源
    最近更新 更多