Liferay使用Ajax调用后台学习笔记

该博客介绍了如何在portlet中创建一个MVC类型的组件,并利用jQuery进行Ajax交互。首先,下载jQuery库并将其置于指定目录下,然后在init.jsp中引入。接着,在view.jsp页面设置按钮和响应区域,并通过portlet:resourceURL标签生成后台请求URL。在JavaScript部分,定义了点击按钮时的Ajax请求,将数据发送到后台。后台接收到请求后,根据resourceID处理数据并返回响应。测试结果显示,Ajax请求成功,日志显示了接收到的参数信息。
  1. 创建mvc类型的portlet
  2. 下载jquery3.6.0.js并放入src/main/resources/META-INF/resources/js目录中
  3. 在init.jsp中添加jquery引用
    <%
        String contextPath = request.getContextPath();
    %>
    <script type="text/javascript" src="<%=contextPath%>/js/jquery3.6.0.js" />
    
  4. view.jsp页面中添加页面元素
    <button type="button" id="testBtn">测试Ajax</button><br>
    <div id="div1"></div>
    
  5. view.jsp中添加后台请求resourceURL标签,可写在div下面,注意这里的var与下面ajax请求的地址对应,id与后台resourceID对应
    <portlet:resourceURL var="ajaxUrl" id="addOper" />
    
  6. 编写js业务处理
    <script type="text/javascript">
        $(function (){
            $("#testBtn").click(function(){
                doAjax() ;
            });
        }) ;
        function doAjax (){
            $.ajax({
                url: '${ajaxUrl}', // 注意这里与步骤5中resourceURL的var对应
                method: "POST",
                data:{
                    <portlet:namespace/>username: "yicj",
                    <portlet:namespace/>password: "123"
                },
                success:function(result){
                    $("#div1").html(result);
                }
            });
        }
    </script>
    
  7. 编写后台处理逻辑
    public class HelloMvcPorletPortlet extends MVCPortlet {
        // 这里需要按自己需要引入log4j依赖即可
        private Logger logger = LoggerFactory.getLogger(HelloMvcPorletPortlet.class);
        @Override
        public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) 
            throws IOException, PortletException {
            // 可以根据这个id作为不同请求的判断(增\删\改\查)
            String resourceID = resourceRequest.getResourceID();
    		String username = ParamUtil.getString(resourceRequest, "username");
    		String password = ParamUtil.getString(resourceRequest, "password") ;
    		logger.info("resourceID : {}", resourceID);
    		logger.info("username : {}", username);
    		logger.info("password : {}", password);
    		resourceResponse.setContentType("text/html");
    		PrintWriter out = resourceResponse.getWriter();
    		out.write("Resource served successfully!");
    		out.flush();
    		out.close();
        }
    }
    
  8. 测试结果
    2021-07-06 07:42:44.271 INFO  [http-nio-8080-exec-8][HelloMvcPorletPortlet:45] resourceID : addOper
    2021-07-06 07:42:44.271 INFO  [http-nio-8080-exec-8][HelloMvcPorletPortlet:46] username : yicj
    2021-07-06 07:42:44.272 INFO  [http-nio-8080-exec-8][HelloMvcPorletPortlet:47] password : 123
    
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值