Disable paginator in datatable when row open for incell edit

UI Components for JSF
Post Reply
megan.eisenbraun
Posts: 4
Joined: 30 Mar 2012, 12:19

30 Mar 2012, 12:30

Hi there,

I am quite new to Primefaces and am using a lazy table loaded with in-cell editing, and pagination. I want to be able to stop users from navigating away for a page if a row is open for editing -they should click the save or cancel button to close it first.
So I need to do 2 things:

1. Disable the paginator on the datatable when the row is opened for editing and re-enable when closed.

2. Have a method to detect if any row is open for editing so I can check it so a user can not navigate away from the page unless this has been closed, e.g a link to another page with command button.

Forgive me if this obvious to everyone else, but any help would be greatly appreciated!

smithh032772
Posts: 6144
Joined: 10 Sep 2011, 21:10

30 Mar 2012, 17:19

I just implemented a page almost similar to your implementation minus the paginator and the in-cell editor. You need private boolean in your bean that says that row is being edited, maybe even a rowBeingEdited POJO, and both updated by onRowEdit AJAX datatable event. in your xhtml, paginator="true" with paginator="#{!bean.rowBeingEdited}", use the same to disable all command buttons, links, menuitems, etc on your page.

I am using row selection in datatable and render a separate panel to allow user to edit additional properties of the POJO on each row of the datatable. When row is selected, I disable buttons based on the edit row boolean value.

Away from my office right now. Would normally respond with code and xhtml when necessary.
Howard

PrimeFaces 6.0, Extensions 6.0.0, Push (Atmosphere 2.4.0)
TomEE+ 1.7.4 (Tomcat 7.0.68), MyFaces Core 2.2.9, JDK8
JUEL 2.2.7 | OmniFaces | EclipseLink-JPA/Derby | Chrome

Java EE 6 Tutorial|NetBeans|Google|Stackoverflow|PrimeFaces|Apache

megan.eisenbraun
Posts: 4
Joined: 30 Mar 2012, 12:19

02 Apr 2012, 11:49

Thanks so much for your reply- my problem is catching the open row event with roweditor i.e when you click on the pencil. The rowedit event onnly seems to work if you click the tick button. If I cature a change event on one of the open input field and update the form it closes the open row- if I just update the datatable it does not update the paginator value.

I am catching the row close editor fine- but it when I click the pencil item to open the row I can not work out how to capture the event. Has anyone found an answer to this problem?

the only answer I can seem to find is this
<f:facet name="input">
<p:inputText value="#{entity.nameEntity}" />
<p:commandButton value="Modify" image="ui-icon ui-icon-disk" action="#{entityBean.modifyEntity}" update="tablaList" >
<f:setPropertyActionListener value="#{entity}" target="#{entityBean.entitySelected}" />
</p:commandButton>
</f:facet>


but that is putting an addional command button in cell edit row- and as this is should work on any of the multiple fields it is not a practical solution!

I can not work out how to capture the open row event. Has anyone found an answer to this problem?



Thanks so much for any help!

smithh032772
Posts: 6144
Joined: 10 Sep 2011, 21:10

02 Apr 2012, 13:11

1. What PrimeFaces version are you using? See my signature below and reply with your test/development environment, so we can give you an appropriate response.
2. PrimeFaces 3.x contains rowEditEvent (AJAXBehaviorEvent); i don't remember when it was added.
3. I see special handling in org.primefaces.component.datatable (DataTable.class) for rowEdit request and cancel.

Code: Select all

    public boolean isRowEditRequest(FacesContext context) {
        return context.getExternalContext().getRequestParameterMap().containsKey(this.getClientId(context) + "_rowEdit");
    }

Code: Select all

    @Override
    public void processDecodes(FacesContext context) {
		String clientId = getClientId(context);
        Map<String,String> params = context.getExternalContext().getRequestParameterMap();

        if(params.containsKey(clientId + "_rowEditCancel")) {
            context.renderResponse();
        } 
        else {
            super.processDecodes(context);
        }
	}

Code: Select all

            else if(eventName.equals("rowEdit")) {
                int editedRowIndex = Integer.parseInt(params.get(clientId + "_editedRowIndex"));
                setRowIndex(editedRowIndex);
                wrapperEvent = new RowEditEvent(this, behaviorEvent.getBehavior(), this.getRowData());
            }
As denoted above, I'm sure you can trap the ajaxbehaviorevent or requestparametermap, and update datatable paginator, accordingly. Below is a sample rowEditEvent.

Code: Select all

    public void onRowEditEvent(org.primefaces.event.RowEditEvent event) {
        
    }
Since you're new to PrimeFaces, I would recommend using latest version of PrimeFaces (3.2 or 3.3-SNAPSHOT).

If you are still unable to do so, I would recommend that you replace rowEditor with your own custom version of p:dataTable rowEditor via a JSF solution, using the following:
1. commandButton/Links (Edit, Save, Cancel)
2. private Boolean rowIsBeingEdited
3. private Integer rowNumber
4. rendered="..." on display-only columns and editable columns
5. You may need to create a POJO that has attributes mentioned above (rowIsBeingEdited, rowNumber), and encapsulate your other data columns in this special POJO.
6. I have created special POJO classes just to be able to manipulate p:dataTable as I wish/prefer, and I'm almost doing something like above, but not the rowBeingEdited. I have my own custom version of editing a row, but the editable panel is rendered beneath/under the p:dataTable, and all editable columns on the editable datatable are disabled, buttons are disabled until Hide the editPanel. May not be the best solution, but works for me, and I'm happy with it. It's a JSF/PrimeFaces solution via AJAX update="...", disabled="...", and rendered="...".

Code: Select all

    public Boolean getRenderDriverDetailsOriginDestination() {
        return renderDriverDetailsOriginDestination;
    }

    public void onDriverVehicleRowSelect(SelectEvent event) {
        if (renderDriverDetailsOriginDestination  && selectedDriverVehicles != null &&
            selectedDriverVehicles.length != 1) {
            updateSelectedDriverVehicle();
            renderDriverDetailsOriginDestination = false;
        }
    }
    
    public void onDriverVehicleRowUnselect(UnselectEvent event) {
        if (renderDriverDetailsOriginDestination) {
            updateSelectedDriverVehicle();
            renderDriverDetailsOriginDestination = false;
        }
    }
    
    public String getDriverDetailsOriginDestinationLabel() {
        if (renderDriverDetailsOriginDestination)
            return "Hide Driver Details, ...";
        else
            return "Show Driver Details, ...";
    }
    
    public void showHideDriverDetailsOriginDestination() {
        if (selectedDriverVehicles == null || selectedDriverVehicles.length != 1) {
            messages.addFormInfoMsg("Please select ONE Driver/Vehicle.", "");
            return;
        }
        // toggle the boolean value
        renderDriverDetailsOriginDestination = !renderDriverDetailsOriginDestination;
        
        if (renderDriverDetailsOriginDestination) {
            
            selectedDriverVehicle = selectedDriverVehicles[0];
            
...            
    }
POJO

Code: Select all

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package jsf.orders;

import java.util.Date;
import java.util.List;
import java.util.Objects;

import jpa.entities.Destination;
import jpa.entities.OrderDriverDetails;
import jpa.entities.Origin;

/**
 *
 * @author Administrator
 */
public class DriverVehicleForOrder {
    private Integer costDetailsId;
    private String serviceAbbr;
    private Integer rowNumber, sequenceId;
    private Date beginDate, endDate;
    private Double layovers, parking, permits, tolls, gratuity, meals;
    private Integer driver, vehicle;
    private Character serviceVehicleType, reliefDriver, reliefLegDriver;
    private OrderDriverDetails details;
    private List<Destination> destinations;
    private List<Origin> origins;

    public DriverVehicleForOrder(Integer costDetailsId, String serviceAbbr, Integer rowNumber,
                                 Integer sequenceId, Date beginDate, Date endDate,
                                 Double layovers, Double parking, Double permits, Double tolls,
                                 Double gratuity, Double meals, Integer driver, Integer vehicle,
                                 Character serviceVehicleType, Character reliefDriver,
                                 Character reliefLegDriver, OrderDriverDetails details,
                                 List<Destination> destinations, List<Origin> origins) {
        this.costDetailsId = costDetailsId;
        this.serviceAbbr = serviceAbbr;
        this.rowNumber = rowNumber;
        this.sequenceId = sequenceId;
        this.beginDate = beginDate;
        this.endDate = endDate;
        this.layovers = layovers;
        this.parking = parking;
        this.permits = permits;
        this.tolls = tolls;
        this.gratuity = gratuity;
        this.meals = meals;
        this.driver = driver;
        this.vehicle = vehicle;
        this.serviceVehicleType = serviceVehicleType;
        this.reliefDriver = reliefDriver;
        this.reliefLegDriver = reliefLegDriver;
        this.details = details;
        this.destinations = destinations;
        this.origins = origins;
    }

    public Date getBeginDate() {
        return beginDate;
    }

    public void setBeginDate(Date beginDate) {
        this.beginDate = beginDate;
    }

    public Integer getCostDetailsId() {
        return costDetailsId;
    }

    public void setCostDetailsId(Integer costDetailsId) {
        this.costDetailsId = costDetailsId;
    }

    public List<Destination> getDestinations() {
        return destinations;
    }

    public void setDestinations(List<Destination> destinations) {
        this.destinations = destinations;
    }

    public OrderDriverDetails getDetails() {
        return details;
    }

    public void setDetails(OrderDriverDetails details) {
        this.details = details;
    }

    public Integer getDriver() {
        return driver;
    }

    public void setDriver(Integer driver) {
        this.driver = driver;
    }

    public Date getEndDate() {
        return endDate;
    }

    public void setEndDate(Date endDate) {
        this.endDate = endDate;
    }

    public Double getGratuity() {
        return gratuity;
    }

    public void setGratuity(Double gratuity) {
        this.gratuity = gratuity;
    }

    public Double getLayovers() {
        return layovers;
    }

    public void setLayovers(Double layovers) {
        this.layovers = layovers;
    }

    public Double getMeals() {
        return meals;
    }

    public void setMeals(Double meals) {
        this.meals = meals;
    }

    public List<Origin> getOrigins() {
        return origins;
    }

    public void setOrigins(List<Origin> origins) {
        this.origins = origins;
    }

    public Double getParking() {
        return parking;
    }

    public void setParking(Double parking) {
        this.parking = parking;
    }

    public Double getPermits() {
        return permits;
    }

    public void setPermits(Double permits) {
        this.permits = permits;
    }

    public Character getReliefDriver() {
        return reliefDriver;
    }

    public void setReliefDriver(Character reliefDriver) {
        this.reliefDriver = reliefDriver;
    }

    public Character getReliefLegDriver() {
        return reliefLegDriver;
    }

    public void setReliefLegDriver(Character reliefLegDriver) {
        this.reliefLegDriver = reliefLegDriver;
    }

    public Integer getRowNumber() {
        return rowNumber;
    }

    public void setRowNumber(Integer rowNumber) {
        this.rowNumber = rowNumber;
    }

    public Integer getSequenceId() {
        return sequenceId;
    }

    public void setSequenceId(Integer sequenceId) {
        this.sequenceId = sequenceId;
    }

    public String getServiceAbbr() {
        return serviceAbbr;
    }

    public void setServiceAbbr(String serviceAbbr) {
        this.serviceAbbr = serviceAbbr;
    }

    public Character getServiceVehicleType() {
        return serviceVehicleType;
    }

    public void setServiceVehicleType(Character serviceVehicleType) {
        this.serviceVehicleType = serviceVehicleType;
    }

    public Double getTolls() {
        return tolls;
    }

    public void setTolls(Double tolls) {
        this.tolls = tolls;
    }

    public Integer getVehicle() {
        return vehicle;
    }

    public void setVehicle(Integer vehicle) {
        this.vehicle = vehicle;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final DriverVehicleForOrder other = (DriverVehicleForOrder) obj;
        if (!Objects.equals(this.rowNumber, other.rowNumber)) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 29 * hash + Objects.hashCode(this.rowNumber);
        return hash;
    }

}
xhtml

Code: Select all

                <p:panel header="Driver(s) and Vehicle(s)">

                    <p:dataTable id="dt_driverVehicle"
                                value="#{pf_ordersController.driverVehicles}"
                                selection="#{pf_ordersController.selectedDriverVehicles}"
                                var="driverVehicle" rowKey="#{driverVehicle.rowNumber}">
                        
                        <p:ajax partialSubmit="true" event="rowSelect"
                                listener="#{pf_ordersController.onDriverVehicleRowSelect}"
                                update="@(.ui-panel) :driverVehicleSubcontractorForm:formMessages"/>
                        <p:ajax partialSubmit="true" event="rowUnselect"
                                listener="#{pf_ordersController.onDriverVehicleRowUnselect}"
                                update="@(.ui-panel) :driverVehicleSubcontractorForm:formMessages"/>

                        <p:column selectionMode="multiple" style="text-align: center !important;"/> 

                        <p:column headerText="#" style="text-align: center !important;">
                            <h:outputText value="#{driverVehicle.rowNumber}" />
                        </p:column>

                        <p:column headerText="Pricing" style="text-align: center !important;">
                            <p:selectOneMenu value="#{driverVehicle.costDetailsId}"
                                             disabled="#{pf_ordersController.renderDriverDetailsOriginDestination}">
                                <f:selectItem itemLabel="Select One" itemValue=""/>
                                <f:selectItems value="#{pf_orderCostDetailsController.orderCostDetailsListDisplay}"
                                                var="ocdForDriverVehicle"
                                                itemLabel="#{ocdForDriverVehicle.serviceAbbr}#{ocdForDriverVehicle.nbrOfPassengers}"
                                                itemValue="#{ocdForDriverVehicle.costDetailsId}"/>
                                <p:ajax partialSubmit="true"
                                        listener="#{pf_ordersController.changedDriverVehicleAttributes()}"
                                        update=":pageContentPanel"/>
                            </p:selectOneMenu>
                        </p:column>

                        <p:column headerText="Driver" style="text-align: center !important;">
                            <p:selectOneMenu value="#{driverVehicle.driver}"
                                             disabled="#{pf_ordersController.renderDriverDetailsOriginDestination}">
                                <f:selectItem itemLabel="Select One" itemValue="0"/>
                                <f:selectItems value="#{pf_driverController.itemsAvailableSelectOne}"
                                                var="d" itemLabel="#{d.driverName}" itemValue="#{d.driverId}"/>
                                <p:ajax partialSubmit="true" listener="#{pf_ordersController.changedDriverVehicle(driverVehicle)}"/>
                            </p:selectOneMenu>
                        </p:column>

                        <p:column style="text-align: center !important;"
                                  rendered="#{pf_orderCostDetailsController.listHasMCTFlag('Y') == true}">
                            <f:facet name="header">
                                <h:panelGrid columns="1">
                                    <h:outputText value="Select Service"/>
                                    <h:outputText value="Vehicle Type?"/>
                                </h:panelGrid>
                            </f:facet>
                            <p:selectOneMenu value="#{driverVehicle.serviceVehicleType}"
                                             disabled="#{pf_ordersController.renderDriverDetailsOriginDestination}">
                                <f:selectItem itemValue="#{bundle.DropdownOptionValueYes}" itemLabel="#{bundle.DropdownOptionLabelYes}"/>
                                <f:selectItem itemValue="#{bundle.DropdownOptionValueNo}" itemLabel="#{bundle.DropdownOptionLabelNo}"/>
                                <p:ajax partialSubmit="true"
                                        listener="#{pf_ordersController.changedServiceVehicleType(driverVehicle)}"
                                        update=":pageContentPanel"/>
                            </p:selectOneMenu>
                        </p:column>

                        <p:column headerText="Vehicle" style="text-align: center !important;"
                                  rendered="#{pf_orderCostDetailsController.listHasMCTFlag('Y') == true}">
                            <h:panelGroup rendered="#{driverVehicle.serviceVehicleType == 'Y' and pf_orderCostDetailsController.getMCTFlagForOrderCostDetailsId(driverVehicle.costDetailsId) == 'Y'}">
                                <p:selectOneMenu label="Vehicle" value="#{driverVehicle.vehicle}"
                                                 disabled="#{pf_ordersController.renderDriverDetailsOriginDestination}">
                                    <f:selectItem itemLabel="Select One" itemValue=""/>
                                    <f:selectItems value="#{pf_vehicleController.getItemsAvailableSelectOne(driverVehicle.serviceAbbr)}"
                                                var="d" itemLabel="#{d.vehicleNumber}" itemValue="#{d.vehicleId}"/>
                                    <p:ajax partialSubmit="true" listener="#{pf_ordersController.changedDriverVehicle(driverVehicle)}"/>
                                </p:selectOneMenu>
                            </h:panelGroup>
                            <h:panelGroup rendered="#{driverVehicle.serviceVehicleType == 'N' and pf_orderCostDetailsController.getMCTFlagForOrderCostDetailsId(driverVehicle.costDetailsId) == 'Y'}">
                                <p:selectOneMenu label="Vehicle" value="#{driverVehicle.vehicle}"
                                                 disabled="#{pf_ordersController.renderDriverDetailsOriginDestination}">
                                    <f:selectItem itemLabel="Select One" itemValue=""/>
                                    <f:selectItems value="#{pf_vehicleController.getItemsAvailableSelectOne()}"
                                                    var="d" itemLabel="#{d.vehicleNumber}" itemValue="#{d.vehicleId}"/>
                                    <p:ajax partialSubmit="true" listener="#{pf_ordersController.changedDriverVehicle(driverVehicle)}"/>
                                </p:selectOneMenu>
                            </h:panelGroup>
                        </p:column>

                        <p:column headerText="Begin" style="text-align: center !important;">
                            <p:calendar value="#{driverVehicle.beginDate}"
                                        pattern="MM/dd/yyyy hh:mm a" navigator="true"
                                        size="20" label="Begin Date/Time"
                                        disabled="#{pf_ordersController.renderDriverDetailsOriginDestination}">
                                <f:convertDateTime pattern="MM/dd/yyyy hh:mm a" />
                                <p:ajax partialSubmit="true" listener="#{pf_ordersController.changedDriverVehicleAttributes()}"/>
                            </p:calendar>
                        </p:column>

                        <p:column headerText="End" style="text-align: center !important;">
                            <p:calendar value="#{driverVehicle.endDate}"
                                        pattern="MM/dd/yyyy hh:mm a" navigator="true"
                                        size="20" label="End Date/Time"
                                        disabled="#{pf_ordersController.renderDriverDetailsOriginDestination}">
                                <f:convertDateTime pattern="MM/dd/yyyy hh:mm a" />
                                <p:ajax partialSubmit="true" listener="#{pf_ordersController.changedDriverVehicleAttributes()}"
                                        update=":pageContentPanel"/>
                            </p:calendar>
                        </p:column>

                    </p:dataTable>

                    <h:panelGroup layout="block">
                        <p:commandButton value="Add" icon="ui-icon ui-icon-circle-plus"
                                        actionListener="#{pf_ordersController.addDriverVehicle}"
                                        update=":pageContentPanel"
                                        disabled="#{pf_ordersController.renderDriverDetailsOriginDestination}"/>
                        <p:commandButton value="Delete" icon="ui-icon ui-icon-trash"
                                        actionListener="#{pf_ordersController.deleteDriverVehicle}"
                                        update=":pageContentPanel"
                                        disabled="#{pf_ordersController.renderDriverDetailsOriginDestination}"/>
                        <p:commandButton value="#{pf_ordersController.driverDetailsOriginDestinationLabel}"
                                         icon="ui-icon #{pf_ordersController.driverDetailsOriginDestinationIcon}"
                                         actionListener="#{pf_ordersController.showHideDriverDetailsOriginDestination}"
                                         update="@(.ui-panel) :driverVehicleSubcontractorForm:formMessages"/>
                        <p:commandButton value="#{pf_ordersController.driverMoneyLabel}"
                                         icon="ui-icon #{pf_ordersController.driverMoneyIcon}"
                                         actionListener="#{pf_ordersController.showHideDriverMoney}"
                                         update="@(.ui-panel) :driverVehicleSubcontractorForm:formMessages"
                                         disabled="#{pf_ordersController.renderDriverDetailsOriginDestination}"/>
                    </h:panelGroup>

                </p:panel>
                
                <p:panel id="dvsDriverDetailsOriginDestinationPanel"
                         header="#{pf_ordersController.driverDetailsOriginDestinationPanelTitle}"
                         rendered="#{pf_ordersController.renderDriverDetailsOriginDestination}">
                    
                    <p:tabView activeIndex="0" id="dvsDriverDetailsOriginDestinationTabView">
                        
                        <p:tab title="Details">
                            <h:panelGrid columns="1" width="100%">
                                <h:panelGroup style="text-align: left !important;">
                                    <p:commandButton value="Save"
                                                     icon="ui-icon ui-icon-disk"
                                                     update=":driverVehicleSubcontractorForm:_ajax_status :driverVehicleSubcontractorForm:formMessages"
                                                     actionListener="#{pf_orderDriverController.update}"/>
                                    
                                </h:panelGroup>
                                <p:inputTextarea id="detailsTx" value="#{pf_orderDriverController.detailsTx}"
                                                 maxlength="32700" rows="5" style="width: 100% !important;"/>
                            </h:panelGrid>
                        </p:tab>
                        
                        <p:tab title="Origin">
                            <p:outputPanel id="dvsDriverOriginPanel" layout="block">
                                <ui:include src="#{pf_originController.page}"/>
                            </p:outputPanel>
                        </p:tab>
                        
                        <p:tab title="Destination">
                            <p:outputPanel id="dvsDriverDestinationPanel" layout="block">
                                <ui:include src="#{pf_destinationController.page}"/>
                            </p:outputPanel>
                        </p:tab>
                        
                    </p:tabView>
                    
                </p:panel>
                
                <p:panel id="dvsDriverMoneyPanel" header="Driver Money"
                         rendered="#{pf_ordersController.renderDriverMoney}">
                    
                    <p:dataTable id="dt_driverMoney" var="driverMoney"
                                 value="#{pf_ordersController.driverVehicles}">

                        <p:column headerText="#" style="text-align: right !important;">
                            <h:outputText value="#{driverMoney.rowNumber}" />
                        </p:column>
                        <p:column headerText="Name">
                            <h:outputText value="#{pf_driverController.getDriverName(driverMoney.driver)}" />
                        </p:column>
                        <p:column headerText="Begin/End">
                            <h:outputText escape="false"
                                            value="#{pf_ordersController.getTripDateDisplay(driverMoney.beginDate, driverMoney.endDate, true, true, true)}"/>
                        </p:column>
                        <p:column headerText="Layovers" style="text-align: right !important;">
                            <p:inputText id="layovers" size="7" styleClass="number_alignright"
                                        label="Layovers" disabled="pf_orderDriverController.view"
                                        value="#{driverMoney.layovers}">
                                <f:convertNumber minFractionDigits="2"/>
                                <p:ajax partialSubmit="true" listener="#{pf_ordersController.changedDriverVehicleAttributes()}"/>
                            </p:inputText>
                        </p:column>
                        <p:column headerText="Parking" style="text-align: right !important;">
                            <p:inputText id="parking" size="7" styleClass="number_alignright"
                                        label="Parking" disabled="pf_orderDriverController.view"
                                        value="#{driverMoney.parking}">
                                <f:convertNumber minFractionDigits="2"/>
                                <p:ajax partialSubmit="true" listener="#{pf_ordersController.changedDriverVehicleAttributes()}"/>
                            </p:inputText>
                        </p:column>
                        <p:column headerText="Permits" style="text-align: right !important;">
                            <p:inputText id="permits" size="7" styleClass="number_alignright"
                                        label="Permits" disabled="pf_orderDriverController.view"
                                        value="#{driverMoney.permits}">
                                <f:convertNumber minFractionDigits="2"/>
                                <p:ajax partialSubmit="true" listener="#{pf_ordersController.changedDriverVehicleAttributes()}"/>
                            </p:inputText>
                        </p:column>
                        <p:column headerText="Tolls" style="text-align: right !important;">
                            <p:inputText id="tolls" size="7" styleClass="number_alignright"
                                        label="Tolls" disabled="pf_orderDriverController.view"
                                        value="#{driverMoney.tolls}">
                                <f:convertNumber minFractionDigits="2"/>
                                <p:ajax partialSubmit="true" listener="#{pf_ordersController.changedDriverVehicleAttributes()}"/>
                            </p:inputText>
                        </p:column>
                        <p:column headerText="Meals" style="text-align: right !important;">
                            <p:inputText id="meals" size="7" styleClass="number_alignright"
                                        label="Meals" disabled="pf_orderDriverController.view"
                                        value="#{driverMoney.meals}">
                                <f:convertNumber minFractionDigits="2"/>
                                <p:ajax partialSubmit="true" listener="#{pf_ordersController.changedDriverVehicleAttributes()}"/>
                            </p:inputText>
                        </p:column>
                        <p:column headerText="Gratuity" style="text-align: right !important;">
                            <p:inputText id="gratuity" size="7" styleClass="number_alignright"
                                        label="Gratuity" disabled="pf_orderDriverController.view"
                                        value="#{driverMoney.gratuity}">
                                <f:convertNumber minFractionDigits="2"/>
                                <p:ajax partialSubmit="true" listener="#{pf_ordersController.changedDriverVehicleAttributes()}"/>
                            </p:inputText>
                        </p:column>
                        <p:column headerText="Total Cash" style="text-align: right !important;">
                            <p:commandLink title="Click # to update value."
                                           partialSubmit="true" update=":pageContentPanel">
                                <h:outputText value="#{pf_ordersController.getDriverVehicleForOrderTotalCash(driverMoney)}">
                                    <f:convertNumber minFractionDigits="2" type="currency"/>
                                </h:outputText>
                            </p:commandLink>
                        </p:column>

                    </p:dataTable>
                    
                </p:panel>
Howard

PrimeFaces 6.0, Extensions 6.0.0, Push (Atmosphere 2.4.0)
TomEE+ 1.7.4 (Tomcat 7.0.68), MyFaces Core 2.2.9, JDK8
JUEL 2.2.7 | OmniFaces | EclipseLink-JPA/Derby | Chrome

Java EE 6 Tutorial|NetBeans|Google|Stackoverflow|PrimeFaces|Apache

megan.eisenbraun
Posts: 4
Joined: 30 Mar 2012, 12:19

16 Apr 2012, 10:20

I am using primefaces 3.2.

Thanks so much for your reply! :D

smithh032772
Posts: 6144
Joined: 10 Sep 2011, 21:10

16 Apr 2012, 15:50

You're welcome. Please reply with your solution/implementation, when you have completed this requirement of yours.
Howard

PrimeFaces 6.0, Extensions 6.0.0, Push (Atmosphere 2.4.0)
TomEE+ 1.7.4 (Tomcat 7.0.68), MyFaces Core 2.2.9, JDK8
JUEL 2.2.7 | OmniFaces | EclipseLink-JPA/Derby | Chrome

Java EE 6 Tutorial|NetBeans|Google|Stackoverflow|PrimeFaces|Apache

Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 47 guests