• 【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";
        }
        
    }
  • 相关阅读:
    [原][osg]Geometry详解
    [osg]节点遍历nodevisitor浅析
    [原][osg]osgconv浅析
    [原][游戏][攻略]仙之侠道玖章-- --从入门到放弃
    [转][linux]简单的linux下的tcp/udp
    [转][c++][跨平台]c++跨平台开发小结
    人机交互,来和我猜拳吧!
    从零开始学测试【1】测试方法术语总结
    从零开始学测试【2】网页登录界面
    JSP 和 ASP.NET 谁能主宰未来【转】
  • 原文地址:https://www.cnblogs.com/cutter-point/p/8254054.html
Copyright © 2020-2023  润新知