我有一个包含许多输入字段的大表单。用户必须填写一个输入字段(如搜索输入)并按下获取数据并填写表单的命令链接。在以编程方式填写表单后,用户可以检查数据,编辑并提交。
如果用户按照描述行事,一切正常。但是,如果用户尝试提交空表单,他将获得primefaces验证错误(必填字段)。问题是,如果他尝试进行搜索并在inputText中输入内容,如上所述并按搜索命令链接则存在问题 - 仅标记为必需和只读的字段满满的。如果我在之前为空的字段上设置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>
豆:
@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