Вот моя проблема Gwt. Скажем, у меня есть форма с электронной почтой, именем, именем пользователя, паролем... Текстовые поля и кнопка отправки. Когда пользователи нажимают «Отправить», клиент проверяет все поля, после того как все поля будут в порядке, они будут отправлены на сервер для еще одной ТОЧНО такой же проверки.
Кто-то предложил мне создать класс Utility и поместить этот класс в пакет shared.
Посмотрите на этот код
В пакете 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 раза, как это?