相关疑难解决方法(0)

如何让验证取决于按下的按钮?

我创建了表单,我希望在新表创建时在表上显示以前的现有项目.我希望在填写表格时显示匹配的项目.但是当我尝试在没有完成表单的情况下过滤列表时,会出现验证消息,并且表格不会更新.

不知道是否可能,但我想做的事情是这样的:

<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>
Run Code Online (Sandbox Code Playgroud)

我是JSF的新手.

validation jsf primefaces jsf-2 commandbutton

34
推荐指数
3
解决办法
4万
查看次数

如果实体的所有字段都为空,我如何跳过bean验证?

我有一个像这样的地址实体:

@Entity
public class Address implements java.io.Serializable {
    @Id @GeneratedValue(strategy = IDENTITY)
    private Long id;

    @Size(max = 100)
    private String street;

    @Size(max = 15)
    private String nr;

    @Field
    @Size(min = 1, max = 20) @NotBlank
    private String city;
}
Run Code Online (Sandbox Code Playgroud)

这是其他几个实体的一部分.对于一个这样的实体,地址是可选的.我有一个视图,我们的用户可以通过几个表单输入编辑整个实体,包括几个地址字段.

为了能够编辑地址,我使用空地址实体初始化父实体.

现在问题是:Address当所有地址字段都为空时,我不想在实体上持久存在.为了实现这一点,我需要跳过实体的验证,如果(并且仅当)所有字段Address都为空.我该如何以最优雅的方式做到这一点?

我目前正在做的是完全跳过bean验证和<o:validateBean disabled="true" />提交按钮,null如果它是空的,则设置地址.但这听起来像是一个完全黑客,因为它在所有情况下禁用所有验证.我怎么能做得更好?

bean-validation jsf-2 omnifaces

4
推荐指数
1
解决办法
2111
查看次数