0

jQuery.ajax を使用して、ポートレットでこのメソッドを呼び出します。

 serveResource(ResourceRequest request, ResourceResponse response) 

問題は、アクション(ActionRequest req、ActionResponse resp)または送信ボタンを呼び出そうとすると、 serveResourceのみが呼び出されることです。

jsp で使用する serveResource を呼び出すには:

 <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  
    }
}

}

手伝ってくれてありがとう

4

3 に答える 3

4

これは、リソース URL を作成していて、そうすると常にserveResourceメソッドがヒットするためです。アクション メソッドをヒットする場合は、アクション URL を作成する必要があります。

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

次に、ポートレット クラス内で以下を定義できます。

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

    // Code goes here.
}

Liferayクラスを拡張している場合、のname属性は上記のメソッド名に対応することに注意してください。<portlet:actionURL />MVCPortlet

于 2013-05-03T00:06:42.803 に答える