我在Liferay 6.1配置页面中存储首选项,如下所示,没有任何问题
prefs.setValue(prefName, request.getParameter(prefName));
prefs.store();
然后我可以像这样检索它们
prefs.getValue(prefName, StringPool.BLANK);
当存储的字符串不包含双引号但在引号被“截断”后它执行字符串的一部分时,这工作正常。 我认为它是一些url编码/解码问题,我不知道如何解决它。有什么想法吗?
答案 0 :(得分:0)
适合我。您是否碰巧在输入字段中使用首选项?在这种情况下,你显然必须逃避偏好。想象一下这种情况:让您的偏好值为test"test
。现在在输入字段中使用它们,如下所示:
<input type="text" value="<%=prefs%>"/>
这将导致像这样的非法HTML
<input type="text value="test"test"/>
浏览器自然只会将测试显示为值 - 因为属性会以结果报价终止。幸运的是Liferay有com.liferay.portal.kernel.util.HtmlUtil
你可以使用,例如试试
<input type="text" value="<%=HtmlUtil.escapeAttribute(prefs)%>"/>
这将生成如下HTML:
<input type="text" value="test"test"/>
可以很好地解析并给出预期的结果。当你了解它时,请检查你在HtmlUtil中找到的其他转义方法。
如果这不能解决您的问题,请提供您正在使用的版本号。