2010-10-19 3 views
2

Я пытаюсь создать actionUrl, используя следующий кодпортал: actionURL Spring MVC портлетов

<portlet:actionURL var="actionUrl"><portlet:param name='action' value='viewModules' /></portlet:actionURL> 

и карту, что на весеннем контроллер

Однако контроллер не реагирует, как амперсанды сгенерированного URL, являются кодируется

eg

<snip>&amp;p_p_lifecycle=1&amp;p_p_state=normal&amp;p_p_mode=view&amp;p_p_col_id=column-1&amp;p_p_col_count=2</snip> 

Если я unencode и вставить в браузер это работает

Я добавил portlet.url.escape.xml = ложь в portal-ext.properties но не доступен

Могли любой, пожалуйста, мне точку в правильном направлении

Большое спасибо

+0

Закодированные амперсанды не должны быть проблемой, поскольку это действительно правильный способ представления URL-адреса. Возможно, вы используете actionUrl в действии формы? – heikkim

+0

Да - спасибо за ответ. Я использую его в форме –

+0

У меня такая же проблема ... вы когда-нибудь находили решение? –

ответ

0

в форме действия, которые я использую:

<portlet:actionURL var="send" escapeXml="false"/> 
+0

Спасибо за ответ, я дам ему снимок –

+0

Спасибо за ответ, но это дает эту ошибку Атрибут escapeXml недействителен для тега actionURL в соответствии с TLD на org.apache.jasper.compiler.DefaultErrorHandler.jspError (DefaultErrorHandler.java:40) –

+0

Для потомков ошибка «escapeXml invalid for tag» была вероятной, потому что вы не строили против версии pluto-taglib Portlet 2.0. – Lyle

0

Я только что получил совок на этот вопрос с коллегой ...

Видимо портлетов 2,0 изменила статус-кво для URL-адресов и заявили, что они должны быть экранированы по умолчанию. (Раньше не было правила, и кажется, что несколько порталов внедрили их без привязки.) Исключенные URL-адреса в большинстве случаев работают нормально, но не во всех случаях (например, при использовании в JavaScript).

Для этих случаев версия 2.0 тегов предлагает атрибут escapeXml="false". Вот пример:

<portlet:renderURL var="enterAlertUrl" escapeXml="false"> 
    <portlet:param name="action" value="enterAlert"/> 
    <portlet:param name="studentId" value="STUDENTID"/> 
    <portlet:param name="courseId" value="COURSEID"/> 
</portlet:renderURL> 

Это renderURL даст вам URL строку без URL-закодирован амперсандами между параметрами.

+0

Отличная благодарность за то, что вы следили за линией. Теперь, чтобы вспомнить, где она обложила меня проблемой ;-) –

Смежные вопросы