Java 如何在三层模型中验证UI边界中的用户输入?

Java 如何在三层模型中验证UI边界中的用户输入?,java,javafx-8,object-oriented-analysis,3-tier,Java,Javafx 8,Object Oriented Analysis,3 Tier,第一个类是fxController,它是我的UIBoundary。 第二个类是控制器类。 第三个类是实体类 包装控制器; 导入java.io.UnsupportedEncodingException; 导入java.net.URL; 导入java.security.NoSuchAlgorithmException; 导入java.util.ResourceBundle; 导入java.util.regex.*; 导入javax.swing.JOptionPane; 进口实体。*; 输入控制器*

第一个类是fxController,它是我的UIBoundary。 第二个类是控制器类。 第三个类是实体类

包装控制器;
导入java.io.UnsupportedEncodingException;
导入java.net.URL;
导入java.security.NoSuchAlgorithmException;
导入java.util.ResourceBundle;
导入java.util.regex.*;
导入javax.swing.JOptionPane;
进口实体。*;
输入控制器*;
导入javafx.collections.FXCollections;
导入javafx.collections.ObservableList;
导入javafx.event.ActionEvent;
导入javafx.fxml.fxml;
导入javafx.fxml.Initializable;
导入javafx.scene.control.Button;
导入javafx.scene.control.ComboBox;
导入javafx.scene.control.ListView;
导入javafx.scene.control.SelectionMode;
导入javafx.scene.control.Tab;
导入javafx.scene.control.TextField;
公共类注册FXMLController实现可初始化{
//自愿者
@FXML
私有文本字段vnric;
@FXML
私有文本字段vname;
@FXML
私有文本域地址;
@FXML
专用文本域vphone;
@FXML
私人文本字段和电子邮件;
@FXML
私有文本字段Vuser名称;
@FXML
私有文本字段vpassword;
@FXML
私有文本字段和密码;
@FXML
私人按钮btnvcancel;
@FXML
私人按钮注册;
@FXML
私有ListView-vdate;
@FXML
私有列表视图vtime;
@FXML
私人标签;
//捐赠者
@FXML
私有文本域dnric;
@FXML
私有文本字段dname;
@FXML
私人纺织服装;
@FXML
专用文本字段dphone;
@FXML
私人TextField demail;
@FXML
私人TextField dusername;
@FXML
私有文本字段dpassword;
@FXML
私有文本字段dcpassword;
@FXML
私人按钮btndcancel;
@FXML
私人按钮btndsignup;
@FXML
私人制表符;
//障碍
@FXML
私有文本字段隐藏;
@FXML
私有文本字段hnric;
@FXML
私有文本字段hname;
@FXML
私人文本场;
@FXML
专用文本域hphone;
@FXML
私人文本场;
@FXML
私有文本字段husername;
@FXML
私有文本字段hpassword;
@FXML
私有文本字段和密码;
@FXML
私人按钮btnhcancel;
@FXML
私人按钮BTNH注册;
@FXML
专用文本字段hspecialneed;
@FXML
私人标签;
@FXML
私有void vCancelActionbtn(ActionEvent事件){
System.out.println(“取消”);//链接到登录界面
}
@FXML
私有void vSignupActionbtn(ActionEvent事件){
MemberController m=新的MemberController();
m、 processRegisterInformationV(vnric.getText(),vname.getText(),vaddress.getText(),vphone.getText(),vemail.getText(),vusername.getText(),vpassword.getText(),(vdate.getSelectionModel().getSelectedItems()).toString(),(vtime.getSelectionModel().getSelectedItems()).toString();
按钮点击();
}
@FXML
私有无效按钮单击(){
字符串消息=”;
可观察的日子;
天数=vdate.getSelectionModel().getSelectedItems();
用于(字符串m:天){
消息+=m+“\n”;
}
System.out.println(消息);
}
@FXML
私有无效dCancelActionbtn(ActionEvent事件){
系统输出打印项次(“取消”);
}
@FXML
私有无效dSignupActionbtn(ActionEvent事件){
MemberController m=新的MemberController();
//我尝试过验证,但似乎不起作用
如果(validateNric()==true){
m、 processRegisterInformationD(dnric.getText()、dname.getText()、daddress.getText()、dphone.getText()、demail.getText()、dusername.getText()、dpassword.getText());
}
else if(validateName()==true){
m、 processRegisterInformationD(dnric.getText()、dname.getText()、daddress.getText()、dphone.getText()、demail.getText()、dusername.getText()、dpassword.getText());
}
否则{
成员d=新的捐赠者();
d、 setNric(dnric.getText().toUpperCase());
d、 setName(dname.getText());
d、 setAddress(daddress.getText());
d、 setHandphone(dphone.getText());
d、 setEmail(demail.getText());
d、 setUsername(dusername.getText());
试一试{
d、 setPassword(AeSimpleSHA1.SHA1(dpassword.getText());
}捕获(无此算法异常|不支持编码异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
} 
}
@FXML
私有无效hCancelActionbtn(ActionEvent事件){
系统输出打印项次(“取消”);
}
@FXML
私有void hSignupActionbtn(ActionEvent事件){
System.out.println(“恭喜,你现在是一名注册残疾人!”);
MemberController m=新的MemberController();
m、 processRegisterInformationH(hid.getText()、hnric.getText()、hname.getText()、HadAddress.getText()、hphone.getText()、hemail.getText()、hspecialneed.getText()、husername.getText()、hpassword.getText());
}
//向组合框添加项目
ObservableList listviewlist1=FXCollections.observableArrayList(
‘上午九时三十分至十一时三十分’、‘下午一时三十分至三时三十分’、‘晚上五时三十分至七时三十分’;
ObservableList listviewlist2=FXCollections.observableArrayList(
“周一”、“周二”、“周三”、“周四”、“周五”、“周六”、“周日”);
@凌驾
公共void初始化(URL位置、ResourceBundle资源){
设置项(列表视图列表1);
vtime.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
vdate.setItems(listviewlist2);
vdate.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
}
//供体验证
私有布尔validateNric(){
布尔结果=假;
int noOfCharacter=9;
字符串dNric=dNric.getText();
System.out.println(“*************”+dnric.getText());
Pattern validNricPattern=Pattern.compile(“^(S | T | F | G)\\d{7}[A-Z]$”,Pattern.CASE不区分大小写);
Matcher Matcher=validNricPattern.Matcher(dNric);
if(dnric.getText().length()==0){
JOptionPane.showMessageDialog(null,“NRIC/FIN不能为空!”,“Error”,JOptionPane.Error\u消息);
}
else if(dnric.getText().length()noOfCharacter){
JOptionPane