Primefaces数据表必填字段不起作用

时间:2015-08-31 08:27:19

标签: primefaces datatable required-field

我会创建一个关于指定的检查输入信息: http://www.primefaces.org/showcase/ui/message/messages.xhtml

我创建了一个带有很多必填字段的dataTable(inputText with Attribute required =“true”)和p:message into datatable section。 问题是当我点击按钮保存数据时:我没有在我的页面中看到警报消息,而是开始执行关联的bean。 为什么?

我在.xhtml中的代码是这样的:

<h:form>  
<p:messages id="messages" showDetail="true" autoUpdate="true" closable="true" />
<p:dataTable var="myAtt"
             value="#{myBean.attributes}"
             rowIndexVar="myAttIndex">
    <h:inputHidden value="#{myAtt.value}" rendered="#{myAtt.description == 'XXX'}" />
    <p:column rendered="#{myAtt.description == 'XXX'}">
        <h:outputText value="*" rendered="#{myAtt.required}" />  
    </p:column>
    <p:column rendered="#{ myAtt.description == 'YYY'">
        <p:fragment rendered="#{myAtt.description == 'ZZZ'">
            <p:fragment rendered="#{myAtt.value == 'value1'}">
                <p:inputText size="#{myAtt.maxLength}" 
                             value="#{myAtt.value}"
                             rendered="#{myAtt.const == 't1'}"
                             required="true"
                             id="idText">
                    <p:ajax process="@this" event="change" update="@form"/>
                </p:inputText>
                <p:message for="idText"/>
            </p:fragment>
        </p:fragment>
    </p:column>
</p:dataTable> 
<br />
<p:commandButton value="Create" action="#{myBean.commit()}" process="@this" update=":MYPAGE"/>

感谢。

1 个答案:

答案 0 :(得分:0)

您忘记为<h:form id="myForm">p:commandButton

指明了ID

update=":MYPAGE :myForm"的更新中,您必须指明表单的ID:action

修改

根据PrimeFaces用户指南3.5,当用户点击按钮时,将调用属性a=function(l) as.integer(runif(l,1,600)) B=function(c) matrix(as.integer(runif(5*c,1,600)),nrow=5) ispresent1 = function (a,B) { out = outer(a, B, FUN = "==" ) apply(out,c(1,3),FUN="any") } ispresent2 = function (a,B) t(sapply(1:length(a), function(i) apply(B,2,function(x) a[[i]] %in% x))) ispresent3<-function(a,B){ tf<-matrix((B %in% a),nrow=5) sapply(1:ncol(tf),function(x) a %in% B[,x][tf[,x]]) } a1=a(1000) B1=B(20000) > system.time(ispresent1(a1,B1)) user system elapsed 29.91 0.48 30.44 > system.time(ispresent2(a1,B1)) user system elapsed 89.65 0.15 89.83 > system.time(ispresent3(a1,B1)) user system elapsed 0.83 0.00 0.86 res1<-ispresent1(a1,B1) res3<-ispresent3(a1,B1) > identical(res1,res3) [1] TRUE

commandButton