0
ここに私のJavascriptの関数が呼び出されているところからJSPです:ここではJavascriptの機能があります JSPコードは、次の手順を実行して、JSからLiferayの(春ポートレットMVCの)コントローラに取得できません:
<div class="modal-footer">
<button type="button" class="btn btn-primary" id="continueTour" onclick="showTutorial()">Take a Quick Tour</button>
<a href="javascript:disableTutorial();" id="skipTour" class="textanchor" style="padding-left:30px;">Skip Tour</a>
</div>
そこから私は別のJSPをレンダリングする必要があり、コントローラのRenderメソッドに到達する必要があります。私は、ハイパーリンクのクリックをシミュレートするために呼んでいる「シミュレート」メソッドに注目してください(!これが正しいかどうわからないの!): JavascriptのコードshowTutorial()メソッド:
function showTutorial(){
launchTutorial();
}
function launchTutorial(){
var enjoyhint_instance = new EnjoyHint({
onEnd: function(){
AUI().use('liferay-portlet-url', function(A) {
var plid = Liferay.ThemeDisplay.getPlid();
var url=Liferay.PortletURL.createRenderURL();
/*url.setPortletId(plid);*/
url.setPortletName(Liferay.ThemeDisplay.getp)
url.setParameter('render','redirectToEmpInfo');
alert(url);
A.one(document.createElement('a')).attr('href',url).simulate('click');
});
}
});
var enjoyhint_script_steps = [
{
"next #newAuthorizationActive": 'To create an authorization form'
}
];
enjoyhint_instance.set(enjoyhint_script_steps);
enjoyhint_instance.run();
}
はここです私はJavascriptからレンダリング要求をキャッチするために書いたコントローラメソッドです。あなたのコードでも
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
<%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme"%>
<liferay-theme:defineObjects/>
<portlet:defineObjects />
:
var plid = Liferay.ThemeDisplay.getPlid();
var url=Liferay.PortletURL.createRenderURL();
/*url.setPortletId(plid);*/
url.setPortletName(Liferay.ThemeDisplay.getp)
url.setParameter('render','redirectToEmpInfo');
alert(url);
を置き換え、同様の コントローラメソッドは
@RenderMapping(params = "render=redirectToEmpInfo")
protected ModelAndView redirectToEmpInfoForAuthTour(ModelMap map, RenderRequest renderRequest, RenderResponse response) {
LiferayPortal.logInfo(_log, "Inside the render method for Emp Info");
return null;
/*return new ModelAndView("emailsuccess", map);*/
}