这是我的Gwt问题。说,我有一个包含电子邮件,firstName,用户名,密码的表单... Textboxes&提交按钮。当用户单击“提交”时,客户端将验证所有字段,在所有字段都正常后,它们将被发送到服务器以进行另一次完全相同的验证。
有人建议我做一个实用课程&将该课程纳入共享包。
看看这段代码
在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次。而且有很多重复。
所以我的问题是:
我们可以创建某个验证类(或设计某个结构)&amp;将该课程放在共享包中所以客户和服务器可以使用它,所以我只需要验证一次而不是这样做3次吗?
答案 0 :(得分:1)
GWT通过注释支持JSR-303 Bean验证,并且可以在客户端和服务器端使用相同的验证。请参阅validation section of the GWT doc。