向Struts动作方法获取丰富的文本编辑器内容的问题

时间:2014-07-31 11:21:42

标签: struts2 tinymce rich-text-editor

我在项目中集成了tinymice富文本, 当用户输入富文本(包含图像和其他丰富内容)时,我通过ajax调用将内容传递给struts操作方法,然后将其发送到服务器。

tinymce.activeEditor.getContent();

以上行返回如下内容

<p>Test tinymice text content</p>
<p>&nbsp;</p>
<p>with multi line text</p>
<p>&nbsp;</p>
<p>And <strong>Bold text</strong></p>

我将其发送到服务器的内容相同。 但问题是由于一些特殊的符号可能 在struts方面,我没有得到确切的数据。

在struts中我得到的数据如下

<p>Test tinymice text content</p>
<p>

面对图像问题。当我从服务器获取数据时,我获得了有效数据但面临""个字符的问题。示例图像数据如下所示,它在jsp中显示错误为 - Uncaught SyntaxError: Unexpected identifier

错误主要是由于使用了不正确的""字符。我应该如何将富文本发送到struts和to server?在DB中我将其存储为blob

"<p><img src="data:&lt;;base64,&lt;;base64,image/png;base64,

更新 -

我的ajax代码

var postTitle = document.getElementById("title").value;
var postDescription = tinymce.activeEditor.getContent();

var formdata = "title="+postTitle+"&"+"description="+postDescription;

// call function for handling Ajax part
$.ajax({
      type: "POST",      
      url : "postDetails" ,
      contentType: "application/x-www-form-urlencoded",
      async: true,
      data : formdata, 
      cache: false,
      processData: false,
      datatype: json,
      success: successBlock,
      error: failureBlock
});

当我发出提醒

时,上面代码中的表单数据如下所示
 title=test&description=<p>Test tinymice text content</p>
    <p>&nbsp;</p>
    <p>with multi line text</p>
    <p>&nbsp;</p>
    <p>And Bold text</p>

Struts代码

public class DescriptionAction {

    String title;
    String description;


    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

  //Action method
  public String postDescription(){
     //Here my server request goes 

  }

}

1 个答案:

答案 0 :(得分:1)

我找到了问题的答案。 我必须在发布数据之前使用encodeURI 更新了ajax代码

//Remove form data
//var formdata = "title="+postTitle+"&"+"description="+postDescription;

// call function for handling Ajax part
$.ajax({
      type: "POST",      
      url : "postDetails" ,
     //Remove contentType , it should not be form urlencoded
     // contentType: "application/x-www-form-urlencoded",
     // async: true,

     //Use encodeURI to get rid of special characters within richText
      data :{title:postTitle,description:encodeURI(postDescription)}, 
     // cache: false,
     // processData: false,
      datatype: json,
      success: successBlock,
      error: failureBlock
});