Wie nennen spezifische Methode der portlet.java Klasse dann eher diesen serveResource Methode?
Ich möchte etwas Hilfe in liferay mit ajax.
Jetzt rufe ich die ajax-Methode von meinem view.jsp
Seite zu senden einige Daten.
Hier ist Beispielcode verwende ich in view.jsp
:
<%@ 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>
und in meinem portlet.java
Klasse gibt es eine Methode, die aufgerufen wird, von dieser ajax-Aufruf:
@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();
}
}
}
Also meine Frage ist, dass rechts jetzt es ist nur caling standardmäßig @override
Methode von einer beliebigen ajax-Klasse.
Aber wie kann ich call-spezifische Methode der portlet.java
- Klasse, ajax-call?
Ich bin neu Biene in ajax. Also bitte guide mich sowieso u können.....
Bekam ich folgenden Fehler beim Aufruf von ajax-url der folgenden
<portlet:actionURL name="ajax_AddAdvertise" var="addToDo" windowState="<%= LiferayWindowState.EXCLUSIVE.toString()%>"> </portlet:actionURL>
06:47:03,705 ERROR [http-bio-8080-exec-23][render_portlet_jsp:154] java.lang.NoSuchMethodException: emenu.advertise.portlet.RestaurantPortlet.ajax_AddAdvertise(javax.portlet.ActionRequest, javax.portlet.ActionResponse)
at java.lang.Class.getMethod(Class.java:1605)
mein process action-Methode wie folgt
@ProcessAction(name = "ajax_AddAdvertise")
public void ajax_AddAdvertise(ResourceRequest request,ResourceResponse response) {
}
- Sie stellten viele Fragen und haben auch entsprechenden Antworten. So kann ich Sie wenigstens erkennen die Antworten auf Ihre Fragen, indem Sie Sie markieren, wie "akzeptiert"? so, dass es hilft, die community wissen, dass diese Fragen beantwortet werden, und wird jemand helfen Suche für die gleiche Sache. Außerdem wäre es nicht Zeit für diejenigen Mitglieder, die helfen möchten, mit anderen Fragen, die sind wirklich offen. Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, wir können nicht zwei verschiedene Versionen von
serveResource
Methoden, wie wir tun, für action-Methoden atleast nicht mit der default-Implementierung.Wenn Sie möchten, verschiedene Methoden, die Sie würden gehen müssen, die Spring MVC (
@ResourceMapping
) Weg zu haben.Weiterhin können Sie definieren, andere Logik in Ihrem
serveResource
Methode mit derresourceId
wie folgt (ein vollständiges Beispiel):In der JSP:
In der portlet-Klasse der
serveResource
- Methode den folgenden code enthalten:Bitte beachten Sie [Wichtig]
In einem portlet sollten Sie nicht verwenden
<html>
,<head>
,<body>
tags da-portlets generieren, fragment von der Seite und nicht die ganze Seite. Auch wenn es erlaubt ist, Ihre daraus resultierende Seite wird nicht gut-gebildet und Verhalten sich anders auf verschiedenen Browsern. Und auch das javascript, das ändert DOM-element wird völlig nutzlos.Bearbeiten nach dieser Kommentar:
Sie können auch die Verwendung von ajax mit action-Methoden:
Menschen nutzen
<portlet:actionURL>
mit ajax in der Regel für<form>
-POST
.Für diese die
actionURL
generiert wird, in einer etwas anderen Weise in Ihre jsp-wie diese:Und in Ihrem portlet können Sie (wie in der Frage):
processAction
Methoden mit ajax??<portlet:actionURL>
mit ajax aber nur für<form>
POST
und nicht anders. DieactionURL
generiert wird, in leicht unterschiedlicher Art und Weise, wie diese:<portlet:actionURL name="ajax_AddAdvertise" var="addToDo" windowState="<%= LiferayWindowState.EXCLUSIVE.toString()%>"> </portlet:actionURL>
. Hoffe, das hilft. Lassen Sie mich wissen, nachdem Sie versucht haben, dieses.actionURL
die Methode sollteactionRequest
und nichtresourceRequest