i am using the method in dynamic form submitForm to call servlet
and it call servlet and make the response but in client side the native method i called by script doesn't invoked
this is the class i make the dynamicform and the native javaScript method
public class UploadImageDialog extends Window{
private HLayout uploadFormLayout;
private DynamicFormExt uploadForm;
private String entityCode;
private String entityClass;
private String UNIQUE_CODE = "uniqueCode";
private AbstractView ownerView;
public UploadImageDialog(FormItem codeFormItem , AbstractView ownerView) {
boolean valid = validate(codeFormItem, ownerView);
if(valid){
initComplete(this);
this.entityCode = codeFormItem.getValue().toString();
this.entityClass = ownerView.getEntityMetaData().getVoClassName();
this.ownerView = ownerView;
init();
show();
}
}
private boolean validate (FormItem codeFormItem , AbstractView owner) {
StringBuilder errorMessage = new StringBuilder();
boolean check = true;
if(codeFormItem==null || codeFormItem.getValue()==null){
errorMessage.append( "Error in UploadImageDialog in code field");
check = false;
}
if(owner==null){
errorMessage.append( "Error in AbstractView = null");
check = false;
}else{
if(owner.getEntityMetaData() == null){
errorMessage.append( "Error in entityMetaData = null");
check = false;
}else if (owner.getEntityMetaData().getVoClassName() == null){
errorMessage.append( "Error in entityMetaData voClass = null");
check = false;
}
}
//.......
if(!check){
ErrorHandlingUtil.handleError(null, null, DSResponse.STATUS_FAILURE, "", "Error on creating image dialog", errorMessage.toString());
}
return check;
}
private void init(){
// ==layout
uploadFormLayout = new HLayout(2);
uploadFormLayout.setMargin(3);
uploadFormLayout.setPadding(3);
// ==window
this.setMargin(4);
this.setPadding(3);
this.setHeight(130);
if(ownerView instanceof Canvas){
this.setParentElement((Canvas)ownerView);
}
this.setWidth(500);
this.setTitle("Upload Image");
this.setCanDrag(false);
this.setCanDragReposition(true);
this.setShowCloseButton(true);
this.setShowMinimizeButton(false);
this.setAutoCenter(true);
this.addItem(uploadFormLayout);
// ==form
uploadForm = new DynamicFormExt();
//uploadForm.add
uploadForm.setWidth100();
uploadForm.setHeight100();
uploadForm.setIsGroup(true);
uploadForm.setMargin(2);
uploadForm.setPadding(2);
uploadForm.setGroupTitle("Upload Image");
uploadForm.setAutoFetchData(false);
uploadForm.setCanSubmit(true);
uploadForm.setAction(GWT.getModuleBaseURL() + "uploadImage");
uploadForm.setEncoding(Encoding.MULTIPART);
uploadForm.addFetchDataHandler(new FetchDataHandler() {
@Override
public void onFilterData(FetchDataEvent event) {
event.getX();
}
});
uploadForm.addSubmitValuesHandler(new SubmitValuesHandler() {
@Override
public void onSubmitValues(SubmitValuesEvent event) {
event.getValues();
}
});
NamedFrame servletTarget = new NamedFrame("hidden_frame");
servletTarget.addLoadHandler(new LoadHandler() {
@Override
public void onLoad(LoadEvent event) {
//event.getNativeEvent().getType();
}
});
servletTarget.setSize("1px", "1px");
servletTarget.setVisible(false);
uploadForm.setTarget("hidden_frame");
final UploadItem image = new UploadItem("Image", "Image");
image.setWidth(400);
image.setRequired(true);
HiddenItem entityCode = new HiddenItem(ImageDataSource.ENTITY_CODE);
entityCode.setValue(this.entityCode);
entityCode.setVisible(true);
HiddenItem entityClass = new HiddenItem(ImageDataSource.ENTITY_CLASS);
entityClass.setValue(this.entityClass);
entityClass.setVisible(true);
HiddenItem uniqueCode = new HiddenItem(UNIQUE_CODE);
entityClass.setValue(this.entityClass);
entityClass.setVisible(true);
//image.add
Button uploadButton = new Button("Upload");
uploadButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
uploadAction();
}
});
uploadForm.setTarget("hidden_frame");
uploadForm.setFields(entityCode , entityClass , uniqueCode, image);
uploadFormLayout.addMember(servletTarget);
uploadFormLayout.addMember(uploadForm);
uploadFormLayout.addMember(uploadButton);
}
private native void initComplete(UploadImageDialog upload) /*-{
$wnd.uploadComplete = function (status) {
upload.@com.emeint.server.core.admin.client.image.view.UploadImageDialog::uploadComplete(Ljava/lang/String;)(status);
};
}-*/;
public void uploadComplete(String status) {
if(status.equals("complete")){
SC.clearPrompt();
destroy();
ownerView.refreshAction();
}else{
SC.clearPrompt();
destroy();
ownerView.refreshAction();
ErrorHandlingUtil.handleError(null, null, DSResponse.STATUS_FAILURE, "",status , "Error On saving Image");
}
}
private void uploadAction() {
boolean validate = uploadForm.validate();
if (validate) {
final String uniqueCode = new Date() + "-" + entityCode +"-" + entityClass +"-" +AdminSecurityManager.getInstance().getClientSessionVO().getKey();
uploadForm.getField(UNIQUE_CODE).setValue(uniqueCode);
uploadForm.submitForm();
//SC.showPrompt("Loading", "Please Wait While processing ...");
//RPCRequest req = isFinishProcessReQ(uniqueCode);
//sendReQ(req , 100);
} else {
return;
}
}
}
this is the servlet
public class ImageFileUploadServlet extends ServletWithSpringContext {
private static final long serialVersionUID = 1L;
private int maxFileSize = 50 * 1024 * 1024;
private int maxMemSize = 4 * 1024 * 1024;
private boolean isMultipart;
private static final String IMAGE_SERVICE = "imageDSRestservice";
private DSRestEntityServiceAdapter<VOIdentifiable, DSModifyRequestWrapper<VOIdentifiable>, HQLCriteriaFilter> imageService;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException {
isMultipart = ServletFileUpload.isMultipartContent(req);
if (!isMultipart) {
// throw exception.
}
DiskFileItemFactory factory = new DiskFileItemFactory();
// maximum size that will be stored in memory
factory.setSizeThreshold(maxMemSize);
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// maximum file size to be uploaded.
upload.setSizeMax(maxFileSize);
try {
// Parse the request to get file items.
List fileItems = upload.parseRequest(req);
// Process the uploaded file items
Iterator i = fileItems.iterator();
ImageVO imageVO = new ImageVO();
while (i.hasNext()) {
FileItem fi = (FileItem) i.next();
if (!fi.isFormField()) {
imageVO.setFileName(fi.getName());
byte[] data = fi.get();
imageVO.setData(data);
imageVO.setFileType(FileTypeEnum.IMAGE);
}else{
String fieldName = fi.getFieldName();
if(fieldName.equals("entityCode")){
imageVO.setEntityCode(fi.getString());
}else if(fieldName.equals("entityClass")){
imageVO.setEntityClass(fi.getString());
}
}
}
DSModifyRequestWrapper request = new DSModifyRequestWrapper<VOIdentifiable>();
request.setData(imageVO);
request.setOperationType(DSOperationTypeWrapper.add);
imageService = (DSRestEntityServiceAdapter) getWebApplicationContext().getBean(IMAGE_SERVICE);
DRResponseHolder drResponseHolder= imageService.modify(request);
String responseMessage = "completed";
if(drResponseHolder.getResponse().getStatus() == DSResponse.STATUS_FAILURE){
responseMessage = drResponseHolder.getResponse().getMessage();
}
response.getWriter();
response.setContentType("text/html");
response.setHeader("Pragma", "No-cache");
response.setDateHeader("Expires", 0);
response.setHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<script type=\"text/javascript\">");
out.println("parent.uploadComplete('" + responseMessage +"')");
out.println("</script>");
out.println("</body>");
out.println("</html>");
out.flush();
} catch (Exception ex) {
System.out.println(ex);
} finally {
//response.setStatus(HttpServletResponse.SC_NO_CONTENT);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
and it call servlet and make the response but in client side the native method i called by script doesn't invoked
this is the class i make the dynamicform and the native javaScript method
public class UploadImageDialog extends Window{
private HLayout uploadFormLayout;
private DynamicFormExt uploadForm;
private String entityCode;
private String entityClass;
private String UNIQUE_CODE = "uniqueCode";
private AbstractView ownerView;
public UploadImageDialog(FormItem codeFormItem , AbstractView ownerView) {
boolean valid = validate(codeFormItem, ownerView);
if(valid){
initComplete(this);
this.entityCode = codeFormItem.getValue().toString();
this.entityClass = ownerView.getEntityMetaData().getVoClassName();
this.ownerView = ownerView;
init();
show();
}
}
private boolean validate (FormItem codeFormItem , AbstractView owner) {
StringBuilder errorMessage = new StringBuilder();
boolean check = true;
if(codeFormItem==null || codeFormItem.getValue()==null){
errorMessage.append( "Error in UploadImageDialog in code field");
check = false;
}
if(owner==null){
errorMessage.append( "Error in AbstractView = null");
check = false;
}else{
if(owner.getEntityMetaData() == null){
errorMessage.append( "Error in entityMetaData = null");
check = false;
}else if (owner.getEntityMetaData().getVoClassName() == null){
errorMessage.append( "Error in entityMetaData voClass = null");
check = false;
}
}
//.......
if(!check){
ErrorHandlingUtil.handleError(null, null, DSResponse.STATUS_FAILURE, "", "Error on creating image dialog", errorMessage.toString());
}
return check;
}
private void init(){
// ==layout
uploadFormLayout = new HLayout(2);
uploadFormLayout.setMargin(3);
uploadFormLayout.setPadding(3);
// ==window
this.setMargin(4);
this.setPadding(3);
this.setHeight(130);
if(ownerView instanceof Canvas){
this.setParentElement((Canvas)ownerView);
}
this.setWidth(500);
this.setTitle("Upload Image");
this.setCanDrag(false);
this.setCanDragReposition(true);
this.setShowCloseButton(true);
this.setShowMinimizeButton(false);
this.setAutoCenter(true);
this.addItem(uploadFormLayout);
// ==form
uploadForm = new DynamicFormExt();
//uploadForm.add
uploadForm.setWidth100();
uploadForm.setHeight100();
uploadForm.setIsGroup(true);
uploadForm.setMargin(2);
uploadForm.setPadding(2);
uploadForm.setGroupTitle("Upload Image");
uploadForm.setAutoFetchData(false);
uploadForm.setCanSubmit(true);
uploadForm.setAction(GWT.getModuleBaseURL() + "uploadImage");
uploadForm.setEncoding(Encoding.MULTIPART);
uploadForm.addFetchDataHandler(new FetchDataHandler() {
@Override
public void onFilterData(FetchDataEvent event) {
event.getX();
}
});
uploadForm.addSubmitValuesHandler(new SubmitValuesHandler() {
@Override
public void onSubmitValues(SubmitValuesEvent event) {
event.getValues();
}
});
NamedFrame servletTarget = new NamedFrame("hidden_frame");
servletTarget.addLoadHandler(new LoadHandler() {
@Override
public void onLoad(LoadEvent event) {
//event.getNativeEvent().getType();
}
});
servletTarget.setSize("1px", "1px");
servletTarget.setVisible(false);
uploadForm.setTarget("hidden_frame");
final UploadItem image = new UploadItem("Image", "Image");
image.setWidth(400);
image.setRequired(true);
HiddenItem entityCode = new HiddenItem(ImageDataSource.ENTITY_CODE);
entityCode.setValue(this.entityCode);
entityCode.setVisible(true);
HiddenItem entityClass = new HiddenItem(ImageDataSource.ENTITY_CLASS);
entityClass.setValue(this.entityClass);
entityClass.setVisible(true);
HiddenItem uniqueCode = new HiddenItem(UNIQUE_CODE);
entityClass.setValue(this.entityClass);
entityClass.setVisible(true);
//image.add
Button uploadButton = new Button("Upload");
uploadButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
uploadAction();
}
});
uploadForm.setTarget("hidden_frame");
uploadForm.setFields(entityCode , entityClass , uniqueCode, image);
uploadFormLayout.addMember(servletTarget);
uploadFormLayout.addMember(uploadForm);
uploadFormLayout.addMember(uploadButton);
}
private native void initComplete(UploadImageDialog upload) /*-{
$wnd.uploadComplete = function (status) {
upload.@com.emeint.server.core.admin.client.image.view.UploadImageDialog::uploadComplete(Ljava/lang/String;)(status);
};
}-*/;
public void uploadComplete(String status) {
if(status.equals("complete")){
SC.clearPrompt();
destroy();
ownerView.refreshAction();
}else{
SC.clearPrompt();
destroy();
ownerView.refreshAction();
ErrorHandlingUtil.handleError(null, null, DSResponse.STATUS_FAILURE, "",status , "Error On saving Image");
}
}
private void uploadAction() {
boolean validate = uploadForm.validate();
if (validate) {
final String uniqueCode = new Date() + "-" + entityCode +"-" + entityClass +"-" +AdminSecurityManager.getInstance().getClientSessionVO().getKey();
uploadForm.getField(UNIQUE_CODE).setValue(uniqueCode);
uploadForm.submitForm();
//SC.showPrompt("Loading", "Please Wait While processing ...");
//RPCRequest req = isFinishProcessReQ(uniqueCode);
//sendReQ(req , 100);
} else {
return;
}
}
}
this is the servlet
public class ImageFileUploadServlet extends ServletWithSpringContext {
private static final long serialVersionUID = 1L;
private int maxFileSize = 50 * 1024 * 1024;
private int maxMemSize = 4 * 1024 * 1024;
private boolean isMultipart;
private static final String IMAGE_SERVICE = "imageDSRestservice";
private DSRestEntityServiceAdapter<VOIdentifiable, DSModifyRequestWrapper<VOIdentifiable>, HQLCriteriaFilter> imageService;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException {
isMultipart = ServletFileUpload.isMultipartContent(req);
if (!isMultipart) {
// throw exception.
}
DiskFileItemFactory factory = new DiskFileItemFactory();
// maximum size that will be stored in memory
factory.setSizeThreshold(maxMemSize);
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// maximum file size to be uploaded.
upload.setSizeMax(maxFileSize);
try {
// Parse the request to get file items.
List fileItems = upload.parseRequest(req);
// Process the uploaded file items
Iterator i = fileItems.iterator();
ImageVO imageVO = new ImageVO();
while (i.hasNext()) {
FileItem fi = (FileItem) i.next();
if (!fi.isFormField()) {
imageVO.setFileName(fi.getName());
byte[] data = fi.get();
imageVO.setData(data);
imageVO.setFileType(FileTypeEnum.IMAGE);
}else{
String fieldName = fi.getFieldName();
if(fieldName.equals("entityCode")){
imageVO.setEntityCode(fi.getString());
}else if(fieldName.equals("entityClass")){
imageVO.setEntityClass(fi.getString());
}
}
}
DSModifyRequestWrapper request = new DSModifyRequestWrapper<VOIdentifiable>();
request.setData(imageVO);
request.setOperationType(DSOperationTypeWrapper.add);
imageService = (DSRestEntityServiceAdapter) getWebApplicationContext().getBean(IMAGE_SERVICE);
DRResponseHolder drResponseHolder= imageService.modify(request);
String responseMessage = "completed";
if(drResponseHolder.getResponse().getStatus() == DSResponse.STATUS_FAILURE){
responseMessage = drResponseHolder.getResponse().getMessage();
}
response.getWriter();
response.setContentType("text/html");
response.setHeader("Pragma", "No-cache");
response.setDateHeader("Expires", 0);
response.setHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<script type=\"text/javascript\">");
out.println("parent.uploadComplete('" + responseMessage +"')");
out.println("</script>");
out.println("</body>");
out.println("</html>");
out.flush();
} catch (Exception ex) {
System.out.println(ex);
} finally {
//response.setStatus(HttpServletResponse.SC_NO_CONTENT);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}