【问题标题】:PrimeFaces table selection, For two approve and disapprove columnsPrimeFaces 表选择,对于两个批准和不批准列
【发布时间】:2017-07-08 16:05:55
【问题描述】:

我开发了一个批准屏幕(用于创建用户)。在那里,我包括了两个状态,即批准和不批准。目前它只将读数作为批准,它不检查不批准。批准过程对我来说很好。但我也想有不赞成的部分。 我想改进我的代码以分别读取上述两种不同的状态。 如何将批准和不批准对象分配到两个单独的列表中???在 primeface 中找不到两种选择方式的示例。 我想知道如何获得一个列选择作为批准和不批准。

我有以下屏幕

我有以下数据表

<p:dataTable  id="userApprovals" var="user" value="#{userApprovalBean.userApprovals}"
    selection="#{userApprovalBean.selectedUser}" 
    widgetVar="usersTable"
    rowKey="#{user.username}"
    reflow="true"
    paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"
    paginator="true" rows="10" style="margin-bottom:20px">


    <f:facet name="header">
        <h:commandLink style="float:right;">
            <p:graphicImage name="/images/excel.png" width="24" />
            <p:dataExporter type="xls" target="userApprovals" fileName="cars" />
        </h:commandLink>
        User Approval           
        <h:commandLink style="float:right;">
            <p:graphicImage name="/images/pdf.png" width="24"  />
            <p:dataExporter type="pdf" target="userApprovals" fileName="cars" />
        </h:commandLink>

        <p:commandButton id="toggler" type="button" value="Columns" 
                 style="width:100px;float:left;" icon="ui-icon-calculator" />
        <p:columnToggler datasource="userApprovals" trigger="toggler" />

    </f:facet>



    <p:column sortBy="#{user.username}">
        <f:facet name="header">
            <h:outputText value="Username" />
        </f:facet>
        <h:outputText value="#{user.username}" />
    </p:column>

    <p:column sortBy="#{user.firstName}">
        <f:facet name="header">
            <h:outputText value="Name" />
        </f:facet>
        <h:outputText value="#{user.firstName}" />
    </p:column>

    <p:column>
        <f:facet name="header">
            <h:outputText value="Geneder" />
        </f:facet>
        <h:outputText value="#{user.gender}" />
    </p:column>

    <p:column style="width:160px;">
        <f:facet name="header">
            <h:outputText value="Address" />
        </f:facet>
        <h:outputText value="#{user.addressLine1}" />
    </p:column> 

    <p:column>
        <f:facet name="header">
            <h:outputText value="User Role" />
        </f:facet>
        <h:outputText value="#{user.userRole.userRoleDescription}" />
    </p:column>

    <p:column sortBy="#{user.entUser}">
        <f:facet name="header">
            <h:outputText value="Created User" />
        </f:facet>
        <h:outputText value="#{user.entUser}" />
    </p:column>

    <p:column styleClass="myTable"> 
        <f:facet name="header">
            <h:outputText value="Created Date" />
        </f:facet>
        <h:outputText value="#{user.entDate}" />
    </p:column>

    <p:column style="width:60px;float:center;" >
        <f:facet name="header">
            <h:outputText value="View" />
        </f:facet>
        <p:commandLink update=":form:documentPanel" oncomplete="PF('documentDialog').show()" title="View Detail" styleClass="ui-icon ui-icon-search">
            <f:setPropertyActionListener value="#{user}" target="#{userApprovalBean.gridUser}" />
        </p:commandLink>
    </p:column> 

    <p:column selectionMode="multiple" style="width:55px;text-align:center">
    </p:column>

    <p:column selectionMode="multiple" style="width:55px;text-align:center">
    </p:column> 


    <f:facet name="footer"> 
        <p:commandButton process="userApprovals" update=":form:multiCarDetail" 
        icon="ui-icon-search" value="Selected Records" style="width:200px;height:22px"
        oncomplete="PF('multiCarDialog').show()" /> 
    </f:facet> 
</p:dataTable>

我有以下 Bean

public class UserApprovalBean {

    private List<UserDetail> userApprovals;
    private String recordStatus;
    private List<UserDetail> selectedUser; 
    private UserDetail gridUser;;
    private FacesContext context;
    private UserDetail loggedUserDetail;

    @PostConstruct
    public void init(){
        try {
            context = FacesContext.getCurrentInstance();
            userApprovals = UserApprovalDao.getInstance().findAllUserApproval();
            //selectedUser.clear(); 
        } catch (Exception e) { 
            e.printStackTrace();
        }
    }


    public void submitData(){  
        context = FacesContext.getCurrentInstance();
        FacesMessage message = new FacesMessage();
        RequestContext context1 = RequestContext.getCurrentInstance();
        boolean dataFill = true;

        if (selectedUser.isEmpty()) { 
            message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Validation Error", "You need to select something....!");
            FacesContext.getCurrentInstance().addMessage(null, message);
            context1.addCallbackParam("loggedIn", dataFill);
        }
        else{
            try{   
                for(UserDetail ud: selectedUser){
                    ud.setRecordStatus("ACTIVE");
                    ud.setApprovedUser(loggedUserDetail.getUsername());
                    ud.setApprovedDate(new Timestamp(System.currentTimeMillis()));
                    UserApprovalDao.getInstance().update(ud); 
                } 
                context.getApplication().getNavigationHandler()
                    .handleNavigation(context, null,
                        "/approveUserForm.xhtml?faces-redirect=true"); 
            }
            catch(Exception e){
                e.printStackTrace();
            }
        }
    }


    public void refresh() {
        HttpServletRequest req = (HttpServletRequest) FacesContext
                .getCurrentInstance().getExternalContext().getRequest();
        context = FacesContext.getCurrentInstance();
        if (req.getMethod().equalsIgnoreCase("GET")) {
            try { 
                reload(); 
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    private void reload() {
        clear();
        loadData();
    }

    private void clear() {
        userApprovals.clear(); 
    }

    private void loadData() {
        try { 
            userApprovals = UserApprovalDao.getInstance().findAllUserApproval();
            loggedUserDetail = (UserDetail) context.getExternalContext()
                    .getSessionMap().get("user"); 
        } catch (Exception e) { 
            e.printStackTrace();
        }
    }


    public List<UserDetail> getUserApprovals() {
        return userApprovals;
    }

    public void setUserApprovals(List<UserDetail> userApprovals) {
        this.userApprovals = userApprovals;
    }

    public String getRecordStatus() {
        return recordStatus;
    }

    public void setRecordStatus(String recordStatus) {
        this.recordStatus = recordStatus;
    }

    public List<UserDetail> getSelectedUser() {
        return selectedUser;
    }

    public void setSelectedUser(List<UserDetail> selectedUser) {
        this.selectedUser = selectedUser;
    }

    public UserDetail getGridUser() {
        return gridUser;
    }

    public void setGridUser(UserDetail gridUser) {
        this.gridUser = gridUser;
    }

    public UserDetail getLoggedUserDetail() {
        return loggedUserDetail;
    }

    public void setLoggedUserDetail(UserDetail loggedUserDetail) {
        this.loggedUserDetail = loggedUserDetail;
    } 
}

【问题讨论】:

  • 如何在普通的 JSF 数据表中做到这一点

标签: jsf primefaces datatable


【解决方案1】:

您可以在批准和不批准列中使用p:selectBooleanCheckbox,具有唯一值对象,使用If条件可以轻松获得批准和不批准选择列表

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 2013-09-29
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多