【问题标题】:DataTable Validator数据表验证器
【发布时间】:2011-03-15 10:32:27
【问题描述】:

如何为DataTable 定义validator?例如强制它至少有 1 个 row 来提交?

【问题讨论】:

    标签: jsf jsf-2 validation


    【解决方案1】:

    您可以尝试以下方法(未测试):

    将你的 h:dataTable 绑定到后台 bean 中的 UIComponent:

    <h:dataTable value="#{myBean.myList}" var="item" id="myId" binding="#{myBean.myTable}">
    

    在您的支持 bean 中定义一个 javax.faces.component.html.HtmlDataTable myTable

    在提交按钮的action方法中:

    if (myTable.getRowCount() < 1) {
       FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Your short message", "Your detailed message); 
       FacesContext.getCurrentInstance().addMessage(null, facesMsg);
       return null; // reload view
    }
    

    【讨论】:

    • 谢谢,但我正在寻找 facelet 中的东西,而不是 bean 中的东西! :)
    • 然后你可以从你的提交按钮调用一个javascript/jQuery方法来计算表格的行数。
    • 你的意思是没有办法通过添加验证器标签或类似的东西?
    • 我理解您的评论,您希望在客户端执行此操作而不涉及服务器。据我所知,验证器在服务器端工作。但我认为实际上您想检查行数而不需要在 bean 中进行额外编码,即使用标准验证器。我什么都不知道。
    • 重点是我不关心验证将在客户端或服务器端执行,我只希望它在 facelet 代码中,而不是在 bean 代码中。类似于 的长度和必需属性
    猜你喜欢
    • 2021-11-17
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 2016-10-10
    • 2018-11-03
    • 2018-11-01
    • 1970-01-01
    相关资源
    最近更新 更多