Validation JSF中的表单验证

Validation JSF中的表单验证,validation,jsf,bean-validation,hibernate-validator,Validation,Jsf,Bean Validation,Hibernate Validator,我正在尝试在提交前验证表单,但未按预期工作 这是我的XHTML <h:outputLabel for="name">Name: </h:outputLabel> <p:inputText id="name" value="#{partyCreationBean.name}" /> <h:message for="name"/> <h:outputLabel for="symbol">Symbol: </h:outputLabel

我正在尝试在提交前验证表单,但未按预期工作

这是我的XHTML

<h:outputLabel for="name">Name: </h:outputLabel>
<p:inputText id="name"  value="#{partyCreationBean.name}" />
<h:message for="name"/>
<h:outputLabel for="symbol">Symbol: </h:outputLabel>
这是我的DTO:

import org.hibernate.validator.constraints.*;

public class PartyDTO implements IDataTransferObject {
    private Integer id;
    @NotEmpty()
    private String name;

    //Getters, setters and other stuff.
}
现在的重点是,如果我将“Name”留空,然后按下按钮创建我的party,页面将保持不变,并且控制台堆栈跟踪中会出现异常(非常像通常的:D)

我尝试使用这个XHTML(添加require=“true”):

名称:
符号:
它工作得很好,但我想把我的“约束”放在DTO级别


提前感谢:)

@NotEmpty不会那样工作的

您需要为此构建getter和setter:

private PartyDTO party = new PartyDTO();
然后您需要创建getter和setter来

@NotEmpty
String name; 
然后在xhtml文件中

<p:inputText id="name"  required="true" value="#{partyCreationBean.party.name}" />

它应该会起作用。当然,如果您愿意使用所需的,就可以了

如果您有其他问题,这也会对您有所帮助。。有时需要添加的jsf参数很少:

好的,我解决了这个问题……:)如果可能的话,我会问你更多的问题。。。现在我还想为这个做一个唯一的约束。。。我在持久层的字段名上有一个JPA注释“Column(nullable=false,unique=true)”。但是如果我输入相同的名称,它会在控制台上出现异常吗?我必须捕获异常并以某种方式显示消息,还是有更简单的方式?!?!?再次谢谢你我不太明白。。如果像这样验证此值,则不必在持久性层中也进行双重验证。。如果您想在这种情况下处理异常(这种情况在当前流中是不可能的),您只需要用try-and-catch从jsf bean中捕获一条消息来包装对持久层的调用:FacesContext.getCurrentInstance().addMessage(null,newfacesMessage(FacesMessage.SEVERITY\u FATAL,“FATAL!”,“系统错误”);类似这样的问题不不,问题在于唯一约束,@NotEmpty现在可以了。但现在我尝试这个解决方案。再次感谢:)因此,如果你能打开另一个问题并链接该线程,我将提供帮助。。我只是不太明白你的意思。NP
@NotEmpty
String name; 
<p:inputText id="name"  required="true" value="#{partyCreationBean.party.name}" />