Как обновить страницу при выборе даты из DatePicker Liferay

Я использую средство выбора даты liferay-ui. Когда моя страница загружается, дата является текущей датой в средстве выбора даты, и данные текущей даты загружаются на страницу. Что я хочу сделать, так это разрешить пользователю просматривать данные таким образом, чтобы, когда пользователь выбирает любую другую дату, отображались данные выбранной даты. Как мне это сделать? Должен ли я обновить всю страницу? как? Или я должен использовать ajax? как мне поступить? если будет использоваться ajax, как мне передать данные?

РЕДАКТИРОВАТЬ:

Я подробно объясню свою проблему. Я использую liferay:ui:date . Я хочу, чтобы пользователь выбрал из него дату. Как только пользователь выбирает дату, я хочу передать дату в custom-sql. Я вызываю функцию поиска в том же jsp следующим образом:

 List<Object[]> ObjdisplayAttListName = AttendanceLocalServiceUtil.findAttendance(currentdate);

Я хочу передать выбранную пользователем дату в вышеуказанной функции. Сейчас я только передаю текущую дату в приведенной выше строке кода. Я хочу передать выбранную пользователем дату.


person Seeya K    schedule 04.06.2013    source источник
comment
Даже после вашего редактирования я не уверен, в чем ваша проблема. Речь идет о переносе даты на контроллер и обратно в jsp (ajax или нет), или об использовании фазы ресурсов? Удалось ли вам раньше передать дату контроллеру?   -  person yannicuLar    schedule 05.06.2013
comment
@yannicuLar: для этой цели я использовал Ajax. Я передал данные, выбранные пользователем, в serveResource, и теперь я получаю объект json в jsp. Однако у меня есть другая проблема. Прямо сейчас я показываю данные, используя: success : function(jsonArray) { alert(jsonArray); $('#displayDate').html(jsonArray[0]); } Есть ли способ сохранить объект json и использовать его в контейнере поиска liferay?   -  person Seeya K    schedule 05.06.2013


Ответы (2)


Я думаю, вам следует использовать AJAX. Сделайте вызов ajax, когда вы выбираете дату с помощью датчика выбора, и получите эту дату в методе serveResource. На основе выбранной вами даты извлеките данные и передайте эти данные на ваш уровень представления в требуемом формате т. е. JSON.

Соберите данные и отобразите их. Вот и все :)

Дайте мне знать, если у вас есть проблемы!

person Laxman Rana    schedule 05.06.2013
comment
Спасибо за ответ. Это то же самое, что и: #16829664" title="отображать данные на jsp на основе выбранной даты из средства выбора даты liferay"> stackoverflow.com/questions/16811854/ - person Seeya K; 05.06.2013
comment
параметр yes.pass в URL-адресе ресурса, чтобы отличить его от остальных вызовов ajax, и проверить этот параметр в методе serveResource и выполнить все необходимые действия. - person Laxman Rana; 05.06.2013

Лично я предпочитаю работать с liferay-ui:input-date. Просто не забудьте сохранить объект даты или календаря в своем классе контроллера.

    <portlet:actionURL var="setDate" name="setDate" >
        <portlet:param name="jspPage" value="/html/yourPage.jsp" />
    </portlet:actionURL>

<aui:form  action="<%= setDate%>" method="post" enctype="multipart/form-data" >
            <%
            Date date  = (Date)renderRequest.getAttribute("_a_date");// Get your Date from the controller
            Calendar cal = CalendarFactoryUtil.getCalendar();
            cal.setTime(new Date()); // create with current date if this form is presented for the 1st time
            if(Validator.isNotNull(date)){
                cal.setTime(date); // else use the Date you want to display

            } 
            %>



            <liferay-ui:input-date
                        yearRangeStart="1970"
                        yearRangeEnd="2100"  
                        formName="pickedDate"
                        dayParam="dd" 
                        monthParam="mm" 
                        yearParam="yy"
                        dayValue="<%= cal.get(Calendar.DATE) %>"
                        monthValue="<%= cal.get(Calendar.MONTH) %>"
                        yearValue="<%= cal.get(Calendar.YEAR) %>"
                        />
             <aui:button name="setDateBtn" value="Submit that date" type="submit"/>
        </aui:form>

Вернемся к контроллеру..

    public void setDate(ActionRequest actionRequest,
        ActionResponse actionResponse) throws IOException, PortletException {


    UploadPortletRequest queryRequest = PortalUtil.getUploadPortletRequest(actionRequest);

    int dd  =  ParamUtil.getInteger(queryRequest, "dd");
    int mm  =  ParamUtil.getInteger(queryRequest, "mm");
    int yy  =  ParamUtil.getInteger(queryRequest, "yy");
   String date_format       = "yyyy/MM/dd";
   SimpleDateFormat sdf     = new SimpleDateFormat(date_format);
   GregorianCalendar gc     = new GregorianCalendar(yy, mm, dd);
   Date date = gc.getTime(); // Keep this Date and reload the page sending this Date in an actionRequest param

        actionRequest.setAttribute("_a_date", date );    
person yannicuLar    schedule 04.06.2013
comment
Да, я использую liferay-ui:input-date. Итак, когда пользователь выбирает дату, я должен передать ее контроллеру с помощью ajax, а затем выполнить необходимые действия? - person Seeya K; 05.06.2013
comment
Я объяснил свою проблему в вопросах в РЕДАКТИРОВАТЬ - person Seeya K; 05.06.2013
comment
Начнем с того, что вам не нужно использовать serveResource (и AJAX), но вы можете создать URL-адрес действия, который снова загрузит ту же страницу, но с другими параметрами. Используя GenericPortlet, я стараюсь избегать вызовов ajax и serveResource. - person yannicuLar; 05.06.2013
comment
Если я правильно понимаю (поправьте меня, если я ошибаюсь :)), я разрешаю пользователю выбрать дату, а затем снова загрузить страницу.. это правильно? Для этого мне нужно будет отправить форму с помощью кнопки отправки... или есть способ выбрать дату и обновить страницу? для этой цели я могу подумать об ajax .. я имею в виду, что реализовал его таким образом, но мне интересно узнать ваш подход из любопытства и некоторые дополнительные идеи :) - person Seeya K; 05.06.2013
comment
Смотрите мое редактирование, надеюсь, это поможет - person yannicuLar; 06.06.2013