作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经创建了表单,并且想在创建新表时在表上显示以前的现有项。我想在表单填写时显示匹配项。但是,当我尝试在未完成表单的情况下过滤列表时,将显示验证消息,并且该表未更新。
不知道是否有可能,但是我想做这样的事情:
<h:form id="form">
<h:outputText value="Name: "/>
<p:inputText value="#{itemsBean.name}" id="name" required="true"/>
<br/>
<h:outputText value="Description: "/>
<p:inputText value="#{itemsBean.description}" id="description" required="true"/>
<p:commandButton value="Save" update="form" actionListener="#{itemsBean.save}"/> //validate and save
<p:commandButton value="Filter" update="form" actionListener="#{itemsBean.updateItemsList}"/> //don't validate, and update the table.
<p:dataTable id="list" value="#{itemsBean.itemsList}" var="item">
<p:column>
<h:outputText value="#{item.name}"/>
</p:column>
<p:column>
<h:outputText value="#{item.description}"/>
</p:column>
</p:dataTable>
</h:form>
最佳答案
我了解您要根据name
输入字段进行过滤。 <p:commandButton>
默认发送ajax请求,并具有process
属性,您可以在其中指定要在提交期间处理的组件。在您的特定情况下,然后应只处理,name
输入字段和当前按钮(以便调用其操作)。
<p:commandButton process="@this name" ... />
process
属性可以采用空格分隔的组件(相对)客户端ID集合,其中
@this
引用当前组件。在
<p:commandButton>
到
@form
(涵盖当前表单的所有输入字段和按下的按钮)的情况下,默认情况下,这就是为什么在初次尝试时都对它们进行了验证的原因。在上面的示例中,所有其他输入字段都不会被处理(因此也不会得到验证)。
required
验证,以便最终可以处理不必全部填写的多个字段,则需要将
required="true"
设置为有条件的而是检查按钮是否被按下。例如,仅当按下保存按钮时,才让它评估
true
:
<p:inputText ... required="#{not empty param[save.clientId]}" />
...
<p:inputText ... required="#{not empty param[save.clientId]}" />
...
<p:commandButton binding="#{save}" value="Save" ... />
这样,当按下其他按钮时,它将不会被验证为
required="true"
。上面示例中的技巧是,已按下按钮的名称(本质上是客户端ID)作为请求参数发送,您可以仅在请求参数映射中检查其名称。
关于validation - 如何让验证取决于按下的按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8370675/
我是一名优秀的程序员,十分优秀!