zoukankan      html  css  js  c++  java
  • 【liferay】6、关于liferay中使用requestMapping映射地址提交表单

    1、接着上一篇博客,从新在定义一下页面

    <%@ page contentType="text/html; charset=utf-8" language="java"
        pageEncoding="utf-8"%>
    <%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    
    <meta http-equiv="expires" content="0">
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    
    <portlet:defineObjects />
    <!-- 获取根目录 -->
    <!-- 这个是用来定义一个参数 -->
    <c:set var="basepath" value="${pageContext.request.contextPath }" />
    
    
    
    这个spring portlet 的message为
    ${message }
    
    <form action="${basepath }/samplecontroller/testac" name="<portlet:namespace />fm" id="<portlet:namespace />fm"
        method="post">
        <ul>
            <li>
                <input type="text" id="firstParams" />
            </li>
            <li>
                <input type="submit" value="直接提交" />
            </li>
        </ul>
    </form>

    2、修改spring配置文件

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
                            http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
                            http://www.springframework.org/schema/context
                            http://www.springframework.org/schema/context/spring-context-4.3.xsd">
    
        <context:component-scan base-package="com.xiaof.springportlet.*"></context:component-scan>
    
        
        <bean id="sampleController" class="com.xiaof.springportlet.controller.SampleController">
            <!-- 
                这里可以配置的属性有4个,原谅我的英语不好,基本都是百度翻译,
                requireSession: 标识这个控制器是否需要一个session来工作,这个功能适用所有controller,
                    当前controller使用的不是当前控制器的session的时候,抛出SessionRequiredException
                synchronizeSession(synchronizeOnSession 4.3版本):如果需要controller在用户回话上保持同步指定这个,如果指定此变量扩展控制器覆盖handlerenderrequestinternal(..)
                    和handleactionrequestinternal(..)方法,并将同步用户的会话。
                    注意实际应该是:synchronizeOnSession而不是synchronizeSession
                renderWhenMinimized:如果您希望控制器在portlet处于最小化状态时实际呈现视图,请将其设置为true。默认情况下,
                    此设置为false,portlet,在最小化状态,不显示任何内容。
                cacheSeconds:当您想要控制器重写portlet定义的默认缓存过期时,在这里指定一个正整数。
                    默认情况下,它被设置为- 1,不会改变默认缓存。将其设置为0将确保结果永远不会缓存。
                
                最后除了最后一个参数是给整数,其余参数都是Boolean类型
             -->
            <property name="cacheSeconds" value="120" />
        </bean>
        
        <bean id="viewResolver"
            class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="viewClass"
                value="org.springframework.web.servlet.view.JstlView" />
            <property name="prefix" value="/WEB-INF/jsp/" />
            <property name="suffix" value=".jsp" />
        </bean>
            
    </beans>

    3、修改controller类

    package com.xiaof.springportlet.controller;
    
    import javax.portlet.ActionRequest;
    import javax.portlet.ActionResponse;
    import javax.portlet.RenderRequest;
    import javax.portlet.RenderResponse;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.portlet.ModelAndView;
    import org.springframework.web.portlet.bind.annotation.ActionMapping;
    import org.springframework.web.portlet.bind.annotation.RenderMapping;
    import org.springframework.web.portlet.mvc.AbstractController;
    
    /**
     * 测试spring-portlet功能
     * @author xiaof
     *
     * 所有spring portlet的控制器都继承于AbstractController
     * 这里requestmapping模式必须为view模式,对应portlet中的portlet-mode
     */
    @RequestMapping("view")
    @Controller(value="/samplecontroller")
    public class SampleController extends AbstractController {
    
        /**
         * 注意这里使用的是@RenderMapping,可以不用
         * 因为这里是handleRenderRequestInternal方法,默认会被执行
         */
    //    @RenderMapping
        public ModelAndView handleRenderRequestInternal(RenderRequest request,
                RenderResponse response) throws Exception {
            
            System.out.println("test spring portlet!!!");
            ModelAndView mav = new ModelAndView("springmvc-sample/view");
            mav.addObject("message", "</br>hello world spring portlet!");
            
            return mav;
        }
        
        @Override
        public void handleActionRequest(ActionRequest request,
                ActionResponse response) throws Exception {
            // TODO Auto-generated method stub
            super.handleActionRequest(request, response);
        }
        
        @RenderMapping(value="/testren", params="myaction=testrender")
        public String testRequestMapping(RenderRequest request,
                RenderResponse response) {
            System.out.println("这里进入spring自定义render方法");
            return "test rendermapping";
        }
        
        @ActionMapping(value="/testac", params="myaction=testaction")
        public String testActionMapping(ActionRequest request,
                ActionResponse response) {
            System.out.println("这里进入spring自定义action方法");
            return "test actionmapping";
        }
        
    }
  • 相关阅读:
    Linux之文件处理命令
    Linux基础命令
    rip实验
    Linux基础之磁盘分区
    mysql安装
    centos Apache、php、mysql默认安装路径
    You probably tried to upload too large file. Please refer to documentation for ways to workaround this limit.
    Wrong permissions on configuration file, should not be world writable!
    机器会学习么 学习总结
    实验 5 Spark SQL 编程初级实践
  • 原文地址:https://www.cnblogs.com/cutter-point/p/8254054.html
Copyright © 2011-2022 走看看