如何在Liferay Portlet类中使用javascript警告框?

时间:2013-01-19 05:54:15

标签: javascript liferay-6 portlet

要求是在保存一些数据后显示来自portlet类的警告框 我怎么能这样做?

我们可以使用PrintWriter actionresponse方法在Portlet类中创建processAction()对象吗?

以下代码无效...

PrintWriter out = actionresponse.getWriter();
String str = "/web/guest/newpage.jsp";
out.println("<script language=\"Javascript\">");
out.println("alert(\"SAVED\");");
out.println("window.location.href=\'"+str+"\'; ");
out.println("</script>");

怎么做?请帮忙..

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

我知道你没有使用任何Ajax调用来保存数据,所以最简单的方法是设置一个请求属性并将控件重定向到JSP,根据你可以执行javascript的请求属性的值调用

在liferay中使用javascript与在任何其他Web应用程序中使用javascript没什么不同。

以下是一些示例代码段(不是整个代码):

在portlet的操作方法中:

// either set the renderParameter 
actionRequest.setRenderParameter("saveSuccessfulPARAM", "SAVED");

// OR set the request attribute
actionRequest.setAttribute("saveSuccessfulATTR", "SAVED");

现在,在成功保存后将呈现的JSP中,您可以拥有:

<%
// Note: You can use jstl or liferay tags instead of scriptlets if you want

String savedAttribute = renderRequest.getAttribute("saveSuccessfulATTR");

// OR you can use this, to fetch the renderParamter set by actionResponse
// String saveParameter = ParamUtil.getString(renderRequest, "saveSuccessfulPARAM")

if("SAVED".equals(savedAttribute)) { // if this is true show an alert
%>

<script>
// you can use <aui:script> tag as well

// .. your javascript code will go here
// better would be to run this script on DOM ready

    alert("Data Saved Successfully!");  // for example
</script>

<%
}
%>

注意:最好在javascript上运行DOM