2015-01-19 2 views
0

В портлете JSP Мне нужно создать серию AcctionURL ciclying над массивом значений.Портлет JSP: Как создать серию ActionURL на основе массива значений

Все нормально в приведенном ниже коде, который я использовал для genarate Серию из RenderURL:

<% 
      PortletURL manageReportURL = renderResponse.createRenderURL(); 
       manageReportURL.setParameter("jspPage", "/html/ManageDossier/manageReport.jsp"); 
       manageReportURL.setParameter("dossierEntryIds", primKey); 
       manageReportURL.setParameter("redirect", rowURL); 
      for (int w = 0; w < csApps.size(); w++) { 
       manageReportURL.setParameter("csAppReportId", String.valueOf(csApps.get(w).getCompanyStudioAppId())); 
     %> 
       <liferay-ui:icon image="category" message="<%= csApps.get(w).getDescription() %>" url="<%= manageReportURL.toString() %>" /> 
     <% 
      } 
     %> 

я использовал тот же самый вид кода ResourceURL и все в порядке:

<% 
     ResourceURL serveResourceURL = renderResponse.createResourceURL(); 
      serveResourceURL.setParameter("dossierId", primKey); 
     for (int n = 0; n < csAppsNoParms.size(); n++) { 
      serveResourceURL.setParameter("csAppReportId", String.valueOf(csAppsNoParms.get(n).getCompanyStudioAppId())); 
    %> 
      <liferay-ui:icon image="print" message="<%= LanguageUtil.get(themeDisplay.getLocale(), \"print\") + StringPool.SPACE + csAppsNoParms.get(n).getDescription() %>" url="<%= serveResourceURL.toString() %>" /> 
    <% 
     } 
    %> 

Но когда я сделаю то же самое для ActionURL, у меня нет ошибок, но мой код действия никогда не выполняется - просто ничего не делается:

<% 
     PortletURL notifyDossierToDittaURL = renderResponse.createActionURL(); 
      notifyDossierToDittaURL.setParameter("resourcePrimKey", primKey); 
      notifyDossierToDittaURL.setParameter("redirect", rowURL); 
     for (int n = 0; n < msgContentToDittaCodes.length; n++) { 
      notifyDossierToDittaURL.setParameter("msgContentCod", msgContentToDittaCodes[n]); 
    %>  
      <liferay-ui:icon image="news" message="<%= LanguageUtil.get(themeDisplay.getLocale(), \"send\") + StringPool.SPACE + msgContentToDittaCodes[n] %>" url="<%= notifyDossierToDittaURL.toString() %>" /> 
    <% 
     } 
    %> 

Пожалуйста, кто-нибудь может увидеть разницу между вышеуказанными createRenderURL() и createActionURL()?

Или напишите мне, чтобы сгенерировать серию ActionURL на основе массива значений?

Спасибо заранее, Ивано С.

+0

У вас есть только один метод processAction() в вашем портлете? Пожалуйста, также разместите свой код портлета. –

+0

Привет, Thakkar, спасибо за ваш вопрос. Благодаря портлету MVCPortlet от Liferay у меня может быть несколько процессов processAction(), например, код JSP в моем первоначальном вопросе вызывает метод ниже: public void notifyDossierToDittaURL (запрос ActionRequest, ответ ActionResponse) throws SystemException, IOException , PortalException {} – icarrara

ответ

0

Как вы используете MVCPortlet Liferay, я имею если у вас есть различные методы «действие» в вашем коде портлета - каждый из которых имеет разные названия курса. Ваш код, похоже, не позволяет MVCPortlet знать, какой метод действия вызывать. Вам нужно будет добавить ниже строк в код:

String actionName = "yourMvcPortletActionMethodName"; 
notifyDossierToDittaURL.setParameter(ActionRequest.ACTION_NAME, actionName); 

Существует лучший способов создания ActionURL в портлете JSP:

<portlet:actionURL var="notifyDossierToDittaURL" name="yourMvcPortletActionMethodName"></portlet:actionURL>

Я рекомендую использовать выше синтаксис по сравнению с скриптлетами в JSP.

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