2017-02-15 15 views
1

У меня есть простая страница, что я использую, чтобы попытаться проверить функцию @EncodeUrl из библиотеки Extension:Почему @EncodeURL не работает?

<xp:panel id="encodeurl"> 

    <xp:inputText value="#{viewScope.encodeurl}" /> 
    <xp:br /> 
    <xp:text value="#{javascript:var x = @EncodeUrl(viewScope.encodeurl); print(x); return x; }" 
     escape="true" /> 
    <xp:button value="submit" id="button1"> 
     <xp:eventHandler event="onclick" submit="true" 
      refreshMode="partial" refreshId="encodeurl"> 
     </xp:eventHandler> 
    </xp:button> 

</xp:panel> 

Используя форму закодировать

http://127.0.0.2/BlogTesting.nsf/ExtLibURLFormulas.xsp?my_Parameter=spaces и $ ymbol $

не кодирует так, как я бы ожидать as exampled elsewhere, то есть:

http://127.0.0.2/BlogTesting.nsf/ExtLibURLFormulas.xsp?my_Parameter=spaces+and+%24ymbol%24

Скорее, все это я получаю ту же строку назад, как на консоли и на экране. Я пробовал это как на складе 9.0, так и на 9.0.1FP7 с v17 библиотеки расширений.

Я что-то упустил?

ответ

4

@EncodeUrl работает не так, как вы ожидаете. Это

Добавляет любые необходимые атрибуты к URL-адресу Domino®, например идентификатор или параметры сеанса .

Использование

java.net.URLEncoder.encode("your string to encode", "utf-8") 

вместо этого. Он кодирует пробелы и специальные символы в URL.
Кодировать только параметры, а не весь URL. Кроме того, не следует кодировать символ разделителя параметров &, а также разделитель значения параметра-значения =.

+0

Спасибо Кнут, у вас есть пример выхода или где функция должна использоваться? Я пытаюсь пересмотреть решение для разработчиков приложений Domino 9 –

+1

Я никогда не использовал @EncodeUrl. К сожалению, у меня нет хорошего примера. Эта функция не упоминается один раз во всех трех книгах XPages ... –