这是我的 Gwt 问题。说,我有一个表单,其中包含电子邮件、名字、用户名、密码......文本框和提交按钮。当用户单击提交时,客户端将验证所有字段,在所有字段都正常后,它们将被发送到服务器进行另一个完全相同的验证。
有人建议我创建一个实用程序类并将该类放入共享包中。
看看这段代码
在 my.com.client 包中:
import my.com.shared.Utility;
public class CustPresenter extends
Presenter<CustPresenter.MyView, CustPresenter.MyProxy> {
@Inject DispatchAsync dispatchAsync;
public void postData(){
PostData postDataAction=new PostData();
String fName=fNameTextBox.getText();
String lName=lNameTextBox.getText();
//....... more field here ....//
if(!Utility.isOKString(fName)){
MyDialogBox myD=new MyDialogBox(fName, "Not OK");
}
else if (!Utility.isOKString(lName)){
MyDialogBox myD=new MyDialogBox(lName, "Not OK");
}
///.......more checking here//
postDataAction.setFName(fName);
postDataAction.setFName(lName);
//... more setting here...//
dispatchAsync.execute(postDataAction, postDataCallback);
}
private AsyncCallback<PostDataResult> postDataCallback=new AsyncCallback<PostDataResult>(){
@Override
public void onFailure(Throwable caught) {
}
@Override
public void onSuccess(PostDataResult result) {
String resultStr=result.getResult();
if(resultStr.equals("fName is not OK")){
MyDialogBox myD=new MyDialogBox(fName, "Not OK");
}
else if (resultStr.equals("lName is not OK")){
MyDialogBox myD=new MyDialogBox(lName, "Not OK");
}
/// more displaying err message...
}
};
}
在 my.com.server 包中
import my.com.shared.Utility;
public class PostDataActionHandler implements
ActionHandler<PostData, PostDataResult> {
@Override
public PostDataResult execute(PostData action, ExecutionContext context)
throws ActionException {
String fName=action.getFName();
String lName=action.getLName();
//more geting here....//
String resultInfo="";
if(!Utility.isOKString(fName)){
resultInfo="fName is not OK";
}
else if (!Utility.isOKString(lName)){
resultInfo="lName is not OK";
}
////... more checking here///
else{
postData();
}
return new PostDataResult(resultInfo);
}
}
正如你在这个结构中看到的,即使我在共享包中使用了 Utility,我仍然需要验证相同的数据 3 次。而且有很多重复。
所以我的问题是:
我们可以创建一个特定的验证类(或设计一个特定的结构)并将该类放在共享包中,以便客户端和服务器可以使用它,所以我只需要验证 1 次而不是像这样执行 3 次?