我使用jQuery.ajax在我的portlet中调用此方法:
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
}
}
}
感谢您的帮助
答案 0 :(得分:4)
这是因为你正在创建一个资源URL,这样做总是会点击serveResource
方法。如果您想点击操作方法,则需要创建操作URL。
<portlet:actionURL name="updateSomething" var="updateSomethingURL" />
然后在你的portlet类中你可以定义:
public void updateSomething(ActionRequest actionRequest, ActionResponse actionResponse)
throws Exception {
// Code goes here.
}
请注意,如果您要扩展Liferay name
类,则<portlet:actionURL />
的{{1}}属性对应于上面的方法名称。
答案 1 :(得分:0)
同意@ rp解决方案...... 你也可以尝试这个 -
liferay-portlet:actionURL name =“updateSomething”var =“updateSomethingURL”
HTH
答案 2 :(得分:0)
我与id有冲突,因为我在两个portlet中使用了相同的javascript ajax函数而没有使用
<portlet:namespace />