我有一个包含许多输入字段的大表单 . 用户必须填写一个输入字段(如搜索输入)并按下获取数据并填写表单的命令链接 . 在以编程方式填写表单后,用户可以检查数据,编辑并提交 .

如果用户按照描述行事,一切正常 . 但是,如果用户尝试提交空表单,他将获得primefaces验证错误(必填字段) . 问题是,如果他尝试进行搜索并在inputText中输入内容,如上所述并按搜索命令链接则存在问题 - 仅填充标记为 requiredreadonly 的字段 . 如果我在之前为空的字段上设置readonly = true,那么从现在起它就像从头开始一样填充 .

问题是我不想将所有字段标记为必需或只读,但我希望字段也填充数据 .

XHTML:

<h:body style="vertical-align:middle;margin:auto">
<h:form enctype="multipart/form-data" id="form" >

    <p:outputLabel for="id" value="ID: " />  
    <p:inputText id="id" value="#{myClass.id}"/>

    <p:commandLink id="fill_form" actionListener="#{myClass.fillForm}"  process="@this id" update="num name storage"/>

    <p:outputLabel for="num" value="Quantity:"/>  
    <p:inputText id="num" value="#{myClass.num}" required="true"/>

    <p:outputLabel for="name" value="Product name:"/> 
    <p:inputText id="name" value="#{myClass.name}" readonly="true"/>

    <p:outputLabel for="storage" value="Storage:"/> 
    <p:inputText id="storage" value="#{myClass.storage}"/>

    <p:commandButton value="Submit" id="submit"  update="form" actionListener="#{myClass.saveData}" global="true" styleClass="button"/>

</h:form> 
</h:body>

beans :

@ManagedBean
@ViewScoped
public class MyClass{

    private long id;
    private int num;
    private String name;
    private String storage;


    public void fillForm() {
    setID(558);
    setNum(10);
    setName("Chair");
    setStorage("XYZ");

    }

    public void saveData() {
        // do stuff
    }

    // getters and setters


}

所以,完成 - 一切都没有问题,直到我故意通过尝试提交空表单导致验证错误 .

如果我在此之后尝试填写表单,只填写必填和只读字段,这是Primefaces中的错误吗?

如果我从字段中删除所有只读和必需属性,则没有填充的字段 .

组态:

Liferay 6.2 CE GA3,Primefaces 5.3,Liferay Faces 3.2.5-ga6