我有一个日期选择器。我想要实现的是:根据用户选择的日期,当天的数据应该显示在jsp上。我使用了一个 serveResource 函数来以其他形式显示一些数据。我是否应该创建另一个这样的函数,以便根据所选日期显示该特定数据的数据?
问问题
1406 次
2 回答
1
您可以在 resourceURL 下传递参数并在 serveResorce 方法下检查该参数。基于该参数调用您的函数或代码
IE
<portlet:resourceURL var="userdetail" >
<portlet:param name="userinfo" value="true"></portlet:param>
</portlet:resourceURL>
于 2013-05-29T12:10:55.600 回答
1
您正在使用serveResource
,因此您想使用 ajax 获取数据。
不幸的是,你的resourceURL
行为不能和你一样actionURL
,换句话说,你不能有多种服务方法,resourceRequest
就像你必须服务一样actionRequest
。
- 因此,您可以使用
actionURL
调用不同的方法,但会刷新您不想要的页面,如我所见 - 或者,您可以在 中设置一个参数,
resourceURL
让serveResource
方法知道您想要返回什么,然后在serveResource
portlet 的方法中设置switch-case
或if-else
确定该请求来自何处。
采用第二种方法:
您的 jsp 看起来像这样(可能无法正常工作):
<aui:button value="Click to get today's data" onClick="fetchCurrentDateData()" />
<portlet:resourceURL var="currentDateDataResourceURL" >
<portlet:param name="whicData" value="currentDateData" />
</portlet:resourceURL>
<aui:script>
function fetchCurrentDateData() {
A.io.request(
currentDateDataResourceURL, {
dataType: 'text', // since you might want to execute a JSP and return HTML code
on: {
success: function(event, id, xhr) {
A.one("#theDivWhereNeedsToBeDisplayed").html(this.get('responseData'));
},
failure: function(event, id, xhr){
}
}
}
);
}
</aui:script>
您的serveResource
方法将是这样的(我假设您的 portlet 扩展MVCPortlet
了 liferay 类):
public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) {
String strWhichData = ParamUtil.getString(resourceRequest, "whicData");
if (strWhichData.equals("currentDateData")){
// call service layer to fetch all the current date data
// this is a method in MVCPortlet if you are extending liferay's MVCPortlet
include("/html/myportlet/viewCurrentData.jsp", resourceRequest, resourceResponse);
} else if (strWhichData.equals("otherAjaxStuff")) {
// do you other stuff and return JSON or HTML as you see fit
} else {
// do your normal stuff
// can return JSON or HTML as you see fit
}
}
注意:
作为旁注,您可以尝试Spring MVC portlet,它使您能够拥有不同的服务方法resourceRequest
。
于 2013-05-30T06:46:24.993 回答