2013-05-02 51 views
0

稱爲:的serveResource當我打電話我使用jQuery.ajax調用此方法在我的portlet操作

serveResource(ResourceRequest request, ResourceResponse response) 

問題是,當我嘗試調用任何行動(的ActionRequest REQ,RESP ActionResponse的)或提交按鈕,只調用serveResource

要調用的serveResource我在JSP中使用:

<portlet:resourceURL var="ajaxURL" > 
     <portlet:param name="jsp" value="<%=request.getPathInfo()%>" /> 
</portlet:resourceURL> 

爲什麼只有始終當我調用其他操作方法,該方法被調用。

編輯:

我的控制器代碼:

public class ConseillerPorlet extends MVCPortlet { 

public void addConsultant(ActionRequest request,ActionResponse response){ 
    List<String> errors=new ArrayList<String>(); 
     ConseillerLocalServiceUtil.addConseiller(request, response); 

      SessionErrors.add(request, "error-saving-consultant"); 
      } 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    } 
@Override 
    public void serveResource(ResourceRequest request, ResourceResponse response) throws IOException, PortletException { 
    String jsp=ParamUtil.getString(request, "jsp"); 
    System.out.println("ServeResouce Called by "+jsp); 
    if(jsp.equals("/html/view.jsp")){ 
     String s=""; 
     List<Classe> classes; 
     long Id=ParamUtil.getLong(request, "id"); 
     try { 
      classes=Utils.getListClasses(etablissementId); 
      for(Classe classe : classes) 
      { 
      s=s+"<option value='"+classe.getClasseId()+"'>"+classe.getNomClasse()+"</option>"; 
      } 
     } catch (SystemException e) { 
      e.printStackTrace(); 
     } 
       response.getWriter().write(s);//return options for my <select> that i get using ajax and jquery 
    } 
} 

}

感謝您的幫助

+0

查看控制器代碼的其餘部分 – 2013-05-03 12:15:12

+0

嗨,現在添加 – 2013-05-03 13:32:01

回答

0

我有衝突因爲我在兩個portlet中使用了相同的javascript ajax函數而不使用
<portlet:namespace />

4

這是因爲你創建資源URL和這樣做會一直打到serveResource方法。如果您想點擊操作方法,則需要創建操作網址。

<portlet:actionURL name="updateSomething" var="updateSomethingURL" /> 

那麼你的portlet類裏面,你可以定義:

public void updateSomething(ActionRequest actionRequest, ActionResponse actionResponse) 
    throws Exception { 

    // Code goes here. 
} 

注意上面,如果你擴展的Liferay MVCPortlet類的<portlet:actionURL />name屬性對應的方法名。

+0

是的,這是我做的,對於作爲動作的方法,我使用actionURL和我的MVCPortlet中的方法名稱。問題是,當我使用提交按鈕和action =我的動作URL調用動作時,只有serveressouce被執行。我需要ajax,因爲我想從serveressouce獲得一些html數據。 – 2013-05-03 09:22:55

+0

在你提供的代碼中,你有創建一個''它需要是''以便它用ActionRequest命中一個方法。 – 2013-05-03 19:45:06

+0

我不想用ActionRequest命中它,我想在下拉列表中使用onchange命中它。 – 2013-05-14 12:00:48

0

與@ RP解決方案同意...... 您也可以嘗試這個 -

Liferay的portlet的:actionURL名= 「updateSomething」 VAR = 「updateSomethingURL」

HTH

相關問題