如何从lfieray portlet中的ajax调用中调用特定方法,而不是调用portlet.java类中的serveResource方法?

时间:2012-11-06 06:32:59

标签: ajax jquery liferay portlet liferay-6

  

可能重复:
  How to call specific method of portlet.java class rather then overide serveResource method?

我有一个关于在liferay中调用ajax方法的混乱现在正在这样做

这是我的示例view.jsp,其中只调用了我的portlet.java类的一个方法

<%@ include file="/init.jsp"%>
<portlet:actionURL name="AddTest" var="add1" />
<portlet:resourceURL id="AddTest" var="AddTest"></portlet:resourceURL>
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>

 <script type="text/javascript">
function addToDo(addToDo){
    var todo =document.getElementById('toDo').value;
    $.ajax({
        url :addToDo,            
          data: {"todo":todo,"CMD":"addToDo"},
          type: "GET",
          dataType: "text",
        success: function(data) {              
              $("#toDoList").html(data);
        }
    });
}
 </script>
</head>

<body>

<portlet:resourceURL var="addToDo" id="addToDo"></portlet:resourceURL>
<form>
<input type="text" name="toDo" id="toDo">
<button name="Add" type="button" onclick="addToDo('<%=addToDo%>')">Add</button>
<div id="toDoList">


</div>
</form>


</body>
</html> 

现在我在我的portlet.java类中重写了serveResource方法

@Override
     public void serveResource(ResourceRequest request, ResourceResponse response){
            if(request.getParameter("CMD").equals("addToDo")){

                System.out.println("came here for add");
                mediatype userToDo = new mediatypeImpl();
                //userToDo.setMediaId(12345);
                try {
                    userToDo.setPrimaryKey((CounterLocalServiceUtil.increment()));
                    userToDo.setMedianame(request.getParameter("todo"));
                    mediatypeLocalServiceUtil.addmediatype(userToDo);

                }
                catch (SystemException e) {
                    e.printStackTrace();
                }

            }
        }

现在我所知道的是来自任何Ajax调用它将重定向到此方法。 但是如何从Ajax调用中调用我的porltet.java类的特定方法呢? 我只是这个阿贾克斯的新蜜蜂,需要你帮助的人..如果有人可以指导我

1 个答案:

答案 0 :(得分:1)

  

如何从Ajax调用中调用我的porltet.java类的特定方法

您在这里指的是哪种具体方法?

当您执行任何resourceURL时,它将仅调用serverResource方法。与执行任何actionURL时相同,它只会调用processAction方法。