我试图在提交之前验证表单,但没有按预期工作。
我的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>
Here my webBean:
@ManagedBean(name = "partyCreationBean")
@RequestScoped
public class PartyCreationBean {
@EJB
PartyManagerLocal ejb_partymanager;
@EJB
AuthenticationManagerLocal ejb_user;
private PartyDTO party = new PartyDTO();
public String getName() {
return party.getName();
}
public void setName(String name) {
party.setName(name);
}
这里是我的DTO:
import org.hibernate.validator.constraints.*;
public class PartyDTO implements IDataTransferObject {
private Integer id;
@NotEmpty()
private String name;
//Getters, setters and other stuff.
}
现在的重点是,如果我留下"Name"为空,我按下按钮来创建我的派对,页面只是保持所有相同,我在控制台堆栈跟踪中得到异常(很像通常:D)
我尝试使用这个XHTML(添加require="true"):
<h:outputLabel for="name">Name: </h:outputLabel>
<p:inputText id="name" required="true" value="#{partyCreationBean.name}" />
<h:message for="name"/>
<h:outputLabel for="symbol">Symbol: </h:outputLabel>
,它工作得很好,但我想把我的"约束"在DTO级别…
提前感谢:)
@NotEmpty是行不通的。
你需要为this构建getter和setter:
private PartyDTO party = new PartyDTO();
然后你需要为
创建getter和setter@NotEmpty
String name;
然后在xhtml文件..
<p:inputText id="name" required="true" value="#{partyCreationBean.party.name}" />
它应该可以工作。当然,如果你用的是required,那就可以了。
如果你有其他问题,这也可以帮助你。有时需要添加的几个jsf参数:Bean验证@NotNull, @NotBlank和@NotEmpty在JSF+Tomcat中不起作用