如何在服务资源方法中捕获合金ui io请求发送的数据?

时间:2014-07-31 06:51:06

标签: liferay-6 alloy-ui

在serveResource方法中获取标题和描述的空白值。这是从io请求发送参数的正确方法吗?

在数据库中插入空值后,我必须重新加载页面以查看插入的值吗?所以io-request不是ajax请求?

    <aui:script use="aui-base">
        A.one('#<portlet:namespace/>save').on('click', function(event) {
        var A = AUI();
        var title=A.one('#<portlet:namespace/>title').val();
        alert(title);
        var description=A.one('#<portlet:namespace/>description');

                    var url = '<%= newJob.toString() %>';
                    A.io.request(
                        url,
                        {

                            method:'POST',
                            data: {
                                <portlet:namespace />title: title,
                                <portlet:namespace />description: description,
                                    },


                        }
                            ['aui-io-deprecated']

                            );
                            Liferay.Util.getOpener().<portlet:namespace/>closePopup('<portlet:namespace/>dialog'); 
        });

2 个答案:

答案 0 :(得分:1)

AUI的io请求只是ajax请求。

您可以使用以下代码在serveResource方法中获取参数:

ParamUtil.get(resourceRequest, "NAMEOFPARAMETER");

修改您的javascript函数并提供如下数据属性:

 data: {
       '<portlet:namespace />title': title,
       '<portlet:namespace />description': description,
       }

答案 1 :(得分:0)

我认为titledescription都是文本字段。如果是,则description会错过.val()来电,或者更恰当地.get('value')。我没有在我的源代码中使用对话框/模态,但整体方法应该是相同的。

<script>
  AUI().use('aui-base', 'aui-io-request', function(A){
    A.one('#<portlet:namespace />save').on('click', function(event) {
         var title= A.one('#<portlet:namespace />title').get('value');
         var description=A.one('#<portlet:namespace />description').get('value');

         var url = '<%=myResourceURL.toString()%>';

         A.io.request(url,
                      {
                         method:'POST',
                         data: {
                                title: title,
                                description: description,
                               },
                         });
                      });
  });
</script>

我对Liferay来说还是比较新的,也遇到了麻烦。我已经注意到data参数不在默认parametersMap的{​​{1}}中,正如您所说的那样。出于好奇,我决定使用

ResourceRequest
<{1>}方法中的

并检查UploadPortletRequest req = PortalUtil.getUploadPortletRequest(resourceRequest); 。其中提供了serveResourceparametersMap参数。我仍在学习从Liferay对象访问数据的位置和方式,但似乎title有数据,它将从默认description内的某处获取...其中仍然难以捉摸我。


在数据库中插入空白值后,我必须重新加载页面以查看插入的值吗?

您必须重新加载页面,因为UploadPortletRequest操作不会触发页面刷新。如果您正在操作要在其他“视图”中反映的数据,则需要配置相应的通信,或使用其他可用的url类型之一触发其他“视图”的ResourceRequest方法。