Я без проблем сохраняю настройки на странице конфигурации Liferay 6.1, как показано ниже.

prefs.setValue(prefName, request.getParameter(prefName));
prefs.store();

Тогда я могу получить их вот так

prefs.getValue(prefName, StringPool.BLANK);

Это нормально работает, когда сохраняемая строка не содержит двойных кавычек, но когда она содержит часть строки после кавычки, «обрезается». Я предполагаю, что это проблема с кодировкой / декодированием URL, и я не уверен, как ее обойти. Любые идеи?

0
steven35 27 Авг 2014 в 18:46

1 ответ

Лучший ответ

Работает на меня. Вы случайно используете настройки в поле ввода? В этом случае вам, очевидно, придется уйти от предпочтений. Представьте себе такой сценарий: пусть значение ваших предпочтений будет test"test. Теперь используйте их в таком поле ввода:

<input type="text" value="<%=prefs%>"/>

Это приведет к появлению недопустимого HTML, подобного этому

<input type="text value="test"test"/>

И браузер, естественно, будет отображать только test как значение - поскольку атрибут завершается результирующей цитатой. К счастью, в Liferay есть com.liferay.portal.kernel.util.HtmlUtil, который вы можете использовать, например пытаться

<input type="text" value="<%=HtmlUtil.escapeAttribute(prefs)%>"/>

Это сгенерирует такой HTML:

<input type="text" value="test&#x22;test"/>

Который хорошо разбирается и дает ожидаемый результат. И пока вы это делаете, проверьте другие методы выхода, которые вы найдете в HtmlUtil.

Если это не решит вашу проблему, укажите номер версии, которую вы используете.

0
Olaf Kock 28 Авг 2014 в 10:41