2012-01-31 88 views
1

有誰知道如何檢索JSP Liferay的portlet的多個選擇值..如何檢索多個選擇值?

我有以下的選擇框

<form name="<portlet:namespace/>fm1" 
    method="post" 
    action=" 
     <portlet:actionURL> 
     <portlet:param name='nextPage' value='pm_addActivityResult.jsp'/> 
     </portlet:actionURL>" 
    onsubmit="return selectAllOptions('item_id')"> 

<table> 
<tr> 
    <td> 

    <select multiple="multiple" id="item_id" name="item_id" size="1"> 
     <c:forEach items="${pageScope.itemList}" var="num"> 
      <option value="${num.id}">${num.type} ${num.model} ${num.serialNo}</option> 
     </c:forEach>  
    </select> 

    </td> 
</tr> 
</table> 

<input type="submit" value="ADD" name="add"/> 

</form> 

我嘗試下面的代碼,但似乎並沒有工作: (

String[] itemId = renderRequest.getParameterValues("item_id"); 

如果有誰知道,請告訴我。我一直堅持這樣做..

明白任何help..thanks

+0

你把選擇標籤放入表單標籤,然後提交表單?@Faiza Zain – Alanmars 2012-01-31 04:53:44

+0

是,我把它放到一個form..and方法也是後.. – 2012-01-31 06:07:31

+0

你可以發佈HTML代碼片段在這裏後ForEach完成?從HTML源代碼中獲取它。 – 2012-01-31 08:04:45

回答

1

首先,因爲您使用窗體,我相信窗體指向一個actionURL而不是renderURL。接下來,如果是這種情況,你應該使用actionRequest.getParameterValues(「item_id」);假設您重寫了processAction,而不是renderRequest。

+0

是的,表單是指向一個actionURL而不renderURL ..我嘗試使用actionRequest.getParameterValues(「item_id」);但出來錯誤java.lang.nullpointerexception .... – 2012-01-31 07:41:25

+0

這意味着表格不張貼。完整的jsp和java文件需要知道什麼是錯誤的,並且您的liferay-plugin-package.properties – 2012-01-31 14:47:42

1

嘗試打印actionRequest.getParameterNames(),或迭代它並打印值。

+0

不能使用actionRequest.getParameterNames(),錯誤:接口javax.portlet.PortletRequest中的方法getParameterNames不能應用於給定的類型; 必需:無參數 found:java.lang.String reason:實際和正式參數列表長度不同 – 2012-01-31 08:41:32

+0

不要在此方法中使用param - java.util.Enumeration \t getParameterNames() 返回包含此請求中包含的參數名稱的String對象的Enumeration。 – user1085746 2012-01-31 11:20:02

1

我修好了!

這是相當複雜的,我有一個Java文件將數據從jsp形式傳遞到另一個。

這樣,而不是使用此代碼:

public void processAction(ActionRequest request, ActionResponse response) throws PortletException, IOException { 

    Map<String,String[]> paramMap = request.getParameterMap(); 
    Set<String> params = paramMap.keySet(); 

    for(String param:params){ 
     response.setRenderParameter(param, paramMap.get(param)[0]); 

    }  
} 

我用這個:

public void processAction(ActionRequest request, ActionResponse response) throws PortletException, IOException { 

    Map<String,String[]> paramMap = request.getParameterMap(); 
    Set<String> params = paramMap.keySet(); 

    for(String param:params){ 

     //string array check 
     String[] paramValues = paramMap.get(param); 
     response.setRenderParameter(param, paramValues); 

    }  
} 

那怎麼我解決它。