Как сохранить весь текст из редактора Ace в WT?

Поэтому я встроил редактор Ace в проект WT и загрузил в него копию файла Ace.js в качестве теста, чтобы посмотреть, как он выглядит. Загрузка прошла нормально, поэтому я попытался ее сохранить и заметил, что моя функция сохранения не вызывается. После некоторой отладки я заметил, что моя функция сохранения не вызывается, если файл, который я пытаюсь сохранить, превышает 70000-80000 символов, вызывается нормально и передает данные, если файл меньше. Как мне обойти это ограничение при попытке сохранить большие файлы? Код, который я запускаю в проекте WT, можно увидеть ниже, с более подробной информацией о том, как его встраивать здесь. Использование ACE с WT

WText *editor;

MyClass::MyClass(const WEnvironment& env)
: WApplication(env)
{
wApp->require("lib/src/ace.js");
// A WContainerWidget is rendered as a div
editor = new WText("function(){\n hello.abc();\n}\n", root());
editor->setInline(false);
editor->resize(500, 500);

std::string editor_ref = editor->jsRef(); // is a text string that will be the element when executed in JS

std::string command =
editor_ref + ".editor = ace.edit(" + editor_ref + ");" +
editor_ref + ".editor.setTheme(\"ace/theme/monokai\");" +
editor_ref + ".editor.getSession().setMode(\"ace/mode/javascript\");";

editor->doJavaScript(command);

JSignal <std::string> *jsignal = new JSignal<std::string>(editor, "textChanged");
jsignal->connect(this, &MyClass::textChanged);

WPushButton *b = new WPushButton("Save", root());

command = "function(object, event) {" +
jsignal->createCall(editor_ref + ".editor.getValue()") +
";}";

b->clicked().connect(command);
}

void MyClass::textChanged(std::string incoming)
{

}

Теперь с помощью приведенного выше кода функция textChanged будет вызываться при нажатии кнопки Сохранить. Однако, если загружен большой файл, я использовал приведенную ниже функцию и заменил «function () {\ n hello.abc (); \ n} \ n» на вызов этого метода.

std::string MyClass::ReadFile(std::string path)
{
std::ifstream in(path, std::ios::in | std::ios::binary);
if(in)
{
std::string contents;
in.seekg(0, std::ios::end);
contents.resize(in.tellg());
in.seekg(0, std::ios::beg);
in.read(&contents[0], contents.size());
in.close();
return(contents);
}
throw(errno);
}

Как упоминалось ранее, я загрузил Ace.js, длина которого составляет около 15 000 строк. Это вызвало сбой моего вызова сохранения. Хотя я уверен, что любой другой файл, превышающий 80 000 символов, также приведет к сбою. Заранее спасибо!

1

Решение

Возможно, max-request-size в wt_config.xml необходимо увеличить. Это 128K по умолчанию.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector