2014-11-10 2 views
0

Я использую теги <ignored-parameter> в friendly-url-routes.xml, чтобы скрыть параметры параметров. Liferay documentation говорит: «Игнорируемые параметры не влияют на распознавание URL». Когда я перенаправляюсь к действию Struts, мои параметры теряются и игнорируются.Liferay дружественные параметры URL потеряны

Отрывок из моего дружественного URL-routes.xml

<route> 
    <pattern>/showSearch</pattern> 
    <ignored-parameter name="searchId"/> 
    <ignored-parameter name="pageNumber"/> 
    <ignored-parameter name="count"/> 
</route> 

Это в struts.xml

<action name="showSearch" method="showSearch" class="com.mycomp.portlet.action.search.SearchAction"> 
     <result name="success"> 
      <param name="location">/WEB-INF/jsp/results/detail.jsp</param> 
      <param name="searchId">${searchId}</param> 
      <param name="pageNumber">${pageNumber}</param> 
      <param name="count">${count}</param> 
     </result> 
</action> 

Как это возможно, что тег влияет на функциональность действия, когда его не предполагается? Есть ли что-нибудь, что я могу сделать, чтобы скрыть эти параметры, но сохранить функциональность? Я не могу использовать <generated-parameter> тегов, потому что эти параметры не всегда имеет значения

Благодаря

+0

Struts2 использует собственную схему для распознавания URL. Наиболее важными параметрами являются имя действия и пространство имен. Другие параметры, которые находятся после имени действия, не важны, поэтому их можно игнорировать. –

+0

Проблема в том, что если я игнорирую их, тогда флажки не будут проверяться, текстовые входы не будут сохраняться в их тексте и т. Д. Я перенаправляю через несколько действий, поэтому, возможно, это мешает одному из сгенерированных URL-адресов где-то по линии – steven35

+0

Затем вы должны добавить их в шаблон. –

ответ

1

Я не знаю, Liferay, но мне кажется логичным, что если вы попросите, чтобы игнорировать параметр, этот параметр будет проигнорирован (чтение : удалены из URL-адресов).

The same documentation you linked, в предыдущем предложении говорится, что:

ignored-parameter элемент определяет параметр, который должен быть проигнорирован и не включены в генерируемых URL-адресов.

После этого неясно, чего вы пытаетесь достичь.

Если вы хотите работать с запросами GET, параметры в QueryString должны остаться там (но вы можете форматировать их в Довольно URL-/Чистые URL-адресов с Advanced Wildcard Mapping). В противном случае вы находитесь violating HTTP 1.1 (GET с телом).

Там также нет необходимости ставить эти параметры в конфигурации Struts на все ...

Если ваши результаты не имеют типа redirect/redirectAction, и, следовательно, параметры будут потеряны по двум запросам. В таком случае вы можете (в redirectAction) статически реплицировать параметры способом, используемым в вашем коде, или (в redirect) динамически копировать только существующие параметры для этого запроса, без необходимости их знать и жестко закодировать их в конфигурация, with this trick.

+0

Вы правы в параметрах в конфигурации Struts. Фактически это действие перенаправления, которое я просто изменил, когда я скопировал его здесь. У меня есть параметр, скрывающий работу в другом портлете с тегами , но он не работает в этом, и я не могу понять, почему – steven35

+0

Просто используйте геттеры и сеттеры и все параметры в redirectAction, даже когда пустые –

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