Я без проблем сохраняю настройки на странице конфигурации Liferay 6.1, как показано ниже.
prefs.setValue(prefName, request.getParameter(prefName));
prefs.store();
Тогда я могу получить их вот так
prefs.getValue(prefName, StringPool.BLANK);
Это нормально работает, когда сохраняемая строка не содержит двойных кавычек, но когда она содержит часть строки после кавычки, «обрезается». Я предполагаю, что это проблема с кодировкой / декодированием URL, и я не уверен, как ее обойти. Любые идеи?
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"test"/>
Который хорошо разбирается и дает ожидаемый результат. И пока вы это делаете, проверьте другие методы выхода, которые вы найдете в HtmlUtil.
Если это не решит вашу проблему, укажите номер версии, которую вы используете.
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.