Chcę wywołać wywołanie ajax w pliku jsp, które wywołuje metodę processAction portletu, na podstawie komunikatu o powodzeniu z metody processAction, potrzebuję wykonać kolejne wywołanie metody portletu serveResource, proszę podać przykłady.Tworzenie zapytania Ajax w portletach dla Liferay 6
Odpowiedz
na podstawie komunikatu o powodzeniu z metody processAction To nie jest właściwy sposób, aby to zrobić. Podczas wywoływania adresu URL portletu akcji w odpowiedzi uzyskujesz zwykłą odpowiedź renderowania, więc otrzymasz stronę ze wszystkimi portletami. Zamiast tego należy użyć funkcji udostępniania zasobów Portlet 2.0 i zwrócić odpowiedź jako zasób.
W portletach metody processAction() automatycznie śledzą metodę renderowania, a zatem odpowiedź ajax zostanie osadzona z fragmentem HTML wygenerowanym metodą renderowania. Więc pisanie ajaxów w portletach jest nieco trudne.
Zobacz mój blog.
http://ajax-and-portlets.blogspot.com/2011/09/ajax-best-practice-in-portlets.html
To daje także wgląd w to, co jest najlepsze praktyki do wdrożenia ajax w portletów (zarówno dla JSR-168 i JSR-286 portletów).
Jeśli potrzebujesz przykładowych portletów, możesz skontaktować się ze mną poprzez dane kontaktowe z bloga. Chętnie ci pomogę.
Dzięki Jignesh
Awesome! Świetny wpis na blogu. – Will
Można sprawdzić moje portlet, który ma przykłady zarówno serveResource i processAction metody powołania. Ajax Jquery Portlet
This question pracował dla mnie.
Zasadniczo kontroler
@Controller
@RequestMapping("VIEW") // VIEW mapping (as opposed to EDIT)
public class MyPortlet {
@RenderMapping
public String handleRenderRequest(RenderRequest request, RenderResponse response) {
return "defaultRender";
}
@ResourceMapping("myURL")
public void handleMyResource(ResourceRequest request, ResourceResponse response) {
OutputStream outStream;
try {
outStream = response.getPortletOutputStream();
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(outStream, "Hello world!");
} catch (IOException ex) {
// TODO : Do something with errors.
}
}
}
A JSP:
<portlet:resourceURL id="myURL" var="myURL"/>
<script type="text/javascript">
var urlink = "<%= myURL %>";
$.ajax({
url: urlink,
cache: false,
type: "POST",
success: function(jsondata) {
console.log(jsondata);
}
});
</script>
Można znaleźć jeden przykład na [przykład] [1] [1]: http://stackoverflow.com/questions/7241861/ajax-in-liferay-portlet –