I am developing the JSP portlet using plugin sdk.
I want to implement AJAX in this portlet.
I am facing the problem while sending the URL in
jQuery.ajax({
type: "GET",
url: "/changemode.jsp",
data: "modeVal=rahul",
success: function(msg){
alert( "Data Saved: " + msg );
}});
the changemode.jsp is @ same location as the calling JSP.
It doest show any error msg, but the changemode.jsp is not get called.
Please advice.
Thanks in advance.
------------------------------------------------------------------------------------
you need to pass url like that
var url = '<portlet:renderURL
windowState="<%= LiferayWindowState.EXCLUSIVE.toString()
%>"><portlet:param name="struts_action"
value="/ext/search/changemode" /></portlet:renderURL>';
and struts action entry should be in struts-config.xml and tiles-defs.xml
-------------------------------------------------------------------------------------
Use the serveResource()
method (javax.portlet.GenericPortlet):
1
public void serveResource(ResourceRequest request, ResourceResponse response)
2
throws PortletException, IOException {
3
4
// Make the parameter "modeVal" available in changeMode.jsp
5
String modeVal = ParamUtil.getString(request, "modeVal");
6
request.setAttribute("modeVal", modeVal);
7
8
// Dispatch to changeMode.jsp
9
PortletRequestDispatcher dispatcher = getPortletContext().getRequestDispatcher(
10
"/WEB-INF/jsp/changeMode.jsp");
11
dispatcher.include(request, response);
12
}
In your jsp, set the url to <portlet:resourceURL/>
:
1
jQuery.ajax({
2
type: "GET",
3
url: "<portlet:resourceURL />",
4
data: "modeVal=rahul",
5
success: function(msg){
6
alert( "Data Saved: " + msg );
7
}});
If you need to handle dispatching to more than one page, specify an id
like this:
1
<portlet:resourceURL id="changeMode" />
Check the id
in serveResource()
to decide where to dispatch the request.
1
if( request.getResourceID().equals("changeMode")) {
2
. . .
3
}
-------------------------------------------------------------------------------------
It is really helpful .... now i'm one step ahead ...
I have some question regarding serveResource() method .....
1. should i write a servlet class which extends form GenericServlet and implement serveResource() method.
2. But in that case while calling that servlet from jsp with url <portlet:resourceURL /> what
should my url mapping of <servlet-mapping> in web.xml
3. Is it possible to set session a value in the same servlet and use it later.
4. On which object should i set session. PortletSession or HttpSession.
-------------------------------------------------------------------------------------------
Hi Rahul, good to hear that you're making progress!
Now, for your additional questions ...
1. Extend
javax.portlet.GenericPortlet
, example:
1
package com.example.portal.test.ajax;
2
3
import java.io.IOException;
4
5
import javax.portlet.GenericPortlet;
6
import javax.portlet.PortletException;
7
import javax.portlet.PortletRequestDispatcher;
8
import javax.portlet.RenderRequest;
9
import javax.portlet.RenderResponse;
10
import javax.portlet.ResourceRequest;
11
import javax.portlet.ResourceResponse;
12
13
import com.liferay.portal.kernel.util.ParamUtil;
14
15
public class AjaxPortlet extends GenericPortlet {
16
17
@Override
18
public void serveResource(ResourceRequest request, ResourceResponse response)
19
throws PortletException, IOException {
20
21
// Make the parameter "modeVal" available in changeMode.jsp
22
String modeVal = ParamUtil.getString(request, "modeVal");
23
request.setAttribute("modeVal", modeVal);
24
25
// Dispatch to changeMode.jsp
26
PortletRequestDispatcher dispatcher = getPortletContext().getRequestDispatcher(
27
"/WEB-INF/jsp/changeMode.jsp");
28
dispatcher.include(request, response);
29
}
30
31
@Override
32
public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException {
33
PortletRequestDispatcher dispatcher = getPortletContext().getRequestDispatcher("/view.jsp");
34
dispatcher.include(request, response);
35
}
36
37
}
2. Specify the above
portlet
class in
/WEB-INF/portlet.xml
:
1
<portlet-class>com.example.portal.test.ajax.AjaxPortlet</portlet-class>
3.
and 4. If you're not using servlets in your application, use
PortletSession. If you need to share session between servlet and
portlet, refer to
this
article.
---------------------------------------------------------------------------------
but now i'm confused because i already have an entry in portlet.xml for <portlet-class> so,
can a portlet have more than one <portlet-class> and if yes what property needs to be set.
If not then can you suggest any other way ....
--------------------------------------------------------------------------------
You cannot have more than one entry for <portlet-class> in portlet.xml
Is your existing entry
com.liferay.util.bridges.MVCPortlet
? This class extends LiferayPortlet which extends GenericPortlet. MVCPortlet implements serveResource() like this:
1
public void serveResource(
2
ResourceRequest resourceRequest, ResourceResponse resourceResponse)
3
throws IOException, PortletException {
4
5
String jspPage = resourceRequest.getParameter("jspPage");
6
7
if (jspPage != null) {
8
include(
9
jspPage, resourceRequest, resourceResponse,
10
PortletRequest.RESOURCE_PHASE);
11
}
12
else {
13
super.serveResource(resourceRequest, resourceResponse);
14
}
15
}
If
this does not suit your needs, you have to replace the entry in
<portlet-class> with your own extension of GenericPortlet (e.g.,
AjaxPortlet).
--------------------------------------------------------------------------------
分享到:
相关推荐
首先,郭启勇教授发表了关于MRI研究的未定题目讲座,为大会定下了学术探讨的基调。祁吉博士分享了中毒性脑病的MRI表现,为了解神经系统病变提供了新的视角。孟悛非教授深入讲解了骨骼肌细胞内脂肪MRS定量研究,揭示...
"Windows下围棋级位测试6000题"是一款专为围棋爱好者设计的练习软件,它包含了6000道围棋题目,旨在帮助未定段的小朋友们进行系统性的学习和训练,提升他们的围棋水平。 首先,我们要理解什么是级位。在围棋的世界...
利用导数比较函数大小的题目,可能涉及到洛必达法则或单调性分析,考验的是考生在面对未定式极限时的分析和解决问题的能力。求解另一极限值的题目,则要求考生具备运用洛必达法则或泰勒展开等高级技巧的能力。而关于...
- 题目3涉及到不等式的性质,特别是如果a>b,那么a^3>b^3通常是正确的,但这并不意味着ac>bc或者a^2>b^2,因为c的正负未定。 3. **逻辑命题**: - 题目2是关于特称命题的否定,原命题是存在一个正数x,使得x^2021...
13. 重力势能的性质:重力势能是相对于参考面而言的,位置确定但参考面未定,势能不确定;距零势能面越远,势能不一定越大,还取决于高度方向;势能变化量等于重力做功,所以从-5J到-3J,势能增加了,选项D正确。 ...
7. 效力未定合同的概念:合同法中,效力未定合同包括限制民事行为能力人签订的合同和无权代理人签订的合同,这类合同需经法定代理人或被代理人追认后才生效。 8. 计算机网络基础:Internet中的主机地址由IP地址唯一...
由于2^ab>1意味着ab>0,但这并不意味着1/a+1/b成立,因为a和b的正负情况未定。同样,1/a+1/b也不能推导出2^ab>1,因此两者之间不存在充分或必要关系,答案为D选项,即既不充分也不必要条件。 3. 考察了奇函数和函数...
异常的优先级从高到低排序是:复位、数据终止、快速中断(FIQ)、普通中断(IRQ)、预取指令终止、未定指令和软件中断(SWI)。 RISC(精简指令集计算机)和CISC(复杂指令集计算机)是两种不同的处理器设计哲学。RISC...
首先,条件开放的题目是指教师在出题时故意留下一些条件未定,允许学生根据已有的信息自行补充或修改条件,并选择适合自己的解题路径。这种方法可以极大地发挥学生的主观能动性,比如在探究食堂大米需求量的问题中,...
①篮球运动员集合定义不明确,因为"优秀"的标准未定;②没有具体内容,无法判断;③两个集合是否相同取决于它们的元素是否完全一致;④空集是任何非空集合的真子集,但不是其自身的真子集。因此,只有④是正确的。 ...
洛必达法则则是解决未定式极限的一种重要工具,用于计算形如`0/0`或`∞/∞`的极限。 5. **对数函数和三角函数的性质**: 在第二题中,利用了对数函数的性质以及正切和正弦函数的关系,将复杂的极限问题转化为简单...
以下是根据题目描述和部分内容解析的相关知识点: 1. **数据处理与有效数字**:在保留有效数字时,需要考虑测量结果的精度。例如,34.965保留3位有效数字为34.9;7.965同样保留3位有效数字为7.97。 2. **计算结果...
6. 无效民事行为与效力未定行为:李某购买地毯的行为尽管基于错误的预期,但行为本身是有效的,因为没有违反法律规定,不属于无效或效力未定行为。 7. 无权代理:甲厂业务员邓某的行为构成无权代理,但合同有效性取...
例如,要计算积分∫(x^3 - 4sin x + 2arctan x - 9)dx,只需输入`Integrate[x^3 - 4Sin[x] + 2ArcTan[x] - 9, x]`,软件会自动计算并返回结果,通常会包含一个未定的常数C。 实验中还给出了其他不定积分的示例,...
由于a的符号未定,无法确定具体形状,但可以知道它们的y轴截距都是c。 7. 配方法解一元二次方程: 配方法是将一元二次方程x^2+px+q=0转化为(x+r)^2=s的形式,以便直接求解。对于0=5x^2-2x-6,可以转换为0=(5x-1)^2-...
5. **交际用语**:题目9展示了日常对话中对于邀请的回答,"It depends"表示情况未定,体现了考生在实际语境中灵活运用交际用语的能力。 从历年山东高考的考点统计来看,**动词及其相关知识**是高频考点,包括动词...
试卷中提到的选项没有直接回答CH的状态,但C选项最接近CH的本质,即猜想存在一个基数,它位于这两个基数之间,但具体数值未定。 4. 量词的定义中,如果 (∃x)P(x) = F 为真,意味着至少存在一个x使得P(x)为假。因此...
即使知道a>b,也不能直接得出ac>bc或者|a|>|b|,因为c的符号未定。只有当c>0时,ac>bc才成立,而|a|>|b|需要考虑a和b的正负。只有2a>2b是恒成立的,因为两边同时乘以正数2不会改变不等式的方向。 第三题涉及了...
洛必达法则主要用于解决“0/0”或“∞/∞”型的未定式极限问题,掌握它对于解决复杂极限问题是不可或缺的。考生应通过大量练习来熟悉各种极限问题的求解方法。 二、连续性、可导性和可微性 这部分内容考查考生对...