0

我有一个日期选择器。我想要实现的是:根据用户选择的日期,当天的数据应该显示在jsp上。我使用了一个 serveResource 函数来以其他形式显示一些数据。我是否应该创建另一个这样的函数,以便根据所选日期显示该特定数据的数据?

4

2 回答 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

  1. 因此,您可以使用actionURL调用不同的方法,但会刷新您不想要的页面,如我所见
  2. 或者,您可以在 中设置一个参数,resourceURLserveResource方法知道您想要返回什么,然后在serveResourceportlet 的方法中设置switch-caseif-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 回答